- シーンにEvent Systemがあるかチェック
- CameraにPhysics Raycasterコンポーネントが追加されているかチェック
AdMobを更新したらdoes not contain bitcodeと言われてXCodeでビルドエラーが出るようになった
だいたい以下のようなエラー文
GoogleAppMeasurement/WithoutAdIdSupport/GoogleAppMeasurement.framework/GoogleAppMeasurement(APMAdExposureReporter.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file XCFrameworkIntermediates/GoogleAppMeasurement/WithoutAdIdSupport/GoogleAppMeasurement.framework/GoogleAppMeasurement' for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
ENABLE_BITCODEをNOにしたらエラーを回避できるという記事をよく見かけたけど、うまくいかず...
結論
UnityFrameworkのENABLE_BITCODEもNOにしたらうまくいった。メインターゲットだけENABLE_BITCODEをNOにするだけだとエラー回避できなかった。
Unityのビルドのポストプロセスで処理する。だいたい以下のような感じ。
public static class XcodePostProcessBuild { [PostProcessBuild] public static void OnPostProcessBuild(BuildTarget target, string path) { if (target != BuildTarget.iOS) { return; } var project = new PBXProject(); project.ReadFromFile(PBXProject.GetPBXProjectPath(path)); project.SetBuildProperty(project.GetUnityMainTargetGuid(), "ENABLE_BITCODE", "NO"); project.SetBuildProperty(project.GetUnityFrameworkTargetGuid(), "ENABLE_BITCODE", "NO"); project.WriteToFile(PBXProject.GetPBXProjectPath(path)); } }
Notion APIでdatabaseを取得しようとするもobject_not_foundでエラーになる
curlを使って取得しようとするも、
{"object":"error","status":404,"code":"object_not_found","message":"Could not find database with ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Make sure the relevant pages and databases are shared with your integration."}
というエラーになる
どうやらかつてはIntegrationを招待するという手順だったのが、今は右上の ...から"コネクトを追加"をするように変わった模様。
チュートリアルページも古いままだったのでハマった。
UniTaskの非同期関数内で待ちたくない
こういう攻撃用のinterfaceを作って、各実装を作る時、
interface IAttackController { UniTask AttackAsync(); } class NormalAttackController : IAttackController { public async UniTask AttackAsync() { ... //なんか非同期の処理 } }
オブジェクトによっては、攻撃したくないからEmptyAttackControllerってなる時がある。
その際に、
class EmptyAttackController : IAttackController { public UniTask AttackAsync() { } }
っという何もしないメソッドを持つクラスを作ってみた。
しかし、これだと返り値が無いよって怒られる。
public async UniTask AttackAsync() { }
っと書くと、今度はawaitしてないよってwarningが出る
こんなwarning↓
warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
なので、
public async UniTask AttackAsync() { await UniTask.Yield(); }
としてみたり、
public async UniTask AttackAsync() { await UniTask.Delay(0); }
としてみたりしたけど、これだと1Frame待ってしまう。
結論
public async UniTask AttackAsync() { await UniTask.CompletedTask; }
これでいけました!これなら待たないです!
Git CloneしてきたプロジェクトでImportFBX Errors:Couldn't read file ... といったエラーが出て困った。
新しくチームに入った人のマシンでgit cloneしてきたもののプロジェクトを開くと、
Could not create asset from ...
ImportFBX Errors:Couldn't read file ...
といったエラーが出て困った。
解決方法
git LFSをinstallしてもらってCloneし直してもらったら解決した。