Unity製アプリが「storeAction unsupported for Memoryless attachment」でiOSで動かない問題

2022年2月8日(更新: 2022年3月5日)

UnityのプロジェクトをiOS用にビルドし、Xcodeで実行しようとした際に以下のようなエラーメッセージが表示され、アプリが起動しない現象に遭遇しました。

UnityでビルドしたiOS用アプリが実行時に起こしたエラー

MTLDebugValidateDeferredStoreActionOnDevice:3935: failed assertion `Deferred Store Action Validation
storeAction unsupported for Memoryless attachment.
'
dyld4 config: DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib:/usr/lib/libMTLCapture.dylib
_MTLDebugValidateDeferredStoreActionOnDevice:3935: failed assertion `Deferred Store Action Validation
storeAction unsupported for Memoryless attachment.
'

原因を調べてみてわかったことを記載しておきます。

原因はMetal

Xcodeが停止した際の箇所を見ると、どうやら Metal 関連のようでした。

UpdateSurfaceStateFromStoreAction at RenderSurfaceMetal.mm:605:9

ビルドしたプロジェクトは Unity 側のプロジェクト設定で Metal API の検証機能の使用(Metal API Validation)をオフにしています。

UnityでMetalAPIをオフにする設定

Xcode側のアプリのScheme設定を見てみると、この検証機能がデフォルトでオンになっています。この Metal API Validation を無効(Disabled)にしてみたところ、無事にアプリが起動するようになりました。

アプリのスキーム設定からMetalを無効化

つまり Metal API Validation の設定を Unity 上のものと Xcode の上のそれで一致させる必要があり、これは自動では行われないようです。

この機能は Metal 自体の使用とは関係ない検証機能ですので OFF にしてもゲームの動作には影響しないと思われます。

Metal 自体の仕様設定はメニューの Edit > Project Settings > Player > Metal Editor Support で設定します。

以上、UnityでビルドしたアプリがiOSで動作しない現象とその対策についてでした。

参考

Metal – Unity マニュアル

コメントを残す

メールアドレスが公開されることはありません。