Unity Build イシュー解決まとめ - ID 238, Strip Engine Code, cs0246
Unity Build イシュー解決まとめ - ID 238, Strip Engine Code, cs0246
Build Error シリーズ (1 / 8)
- Unity Build イシュー解決まとめ - ID 238, Strip Engine Code, cs0246
- Unity - xcworkspace が生成されない問題の解決
- Unity Build イシュー解決まとめ - Gradle build failed, type initializer exception
- Unity Android Permission が削除されない問題の解決方法
- Unity Androidビルドエラー解決 - DexArchiveMergerException & MultiDex
- Unity iOSビルドエラー解決 - Microphone Usage Description & BeeBuildPostprocessor
- Unity iOS TestFlightアップロードエラー解決 - Asset validation failed (90206) Invalid Bundle
- Unity Addressableエラー解決 - RuntimeData is null, Invalid path in TextDataProvider
1. Error: Could not produce class with ID 238. This could be caused by a class being stripped from the build even though it is needed. Try disabling ‘Strip Engine Code’ in Player Settings.
主な現象
- ビルド後に特定のアニメーションやプレハブが消える、またはエラーが発生する。
原因
- Addressable (Asset Bundle) を使っている場合、手動で保持しないといけないクラスが除去されて発生することがある。
解決方法
Strip Engine Codeはビルド時にサイズを減らす機能。- 参考リンク
上記リンクの通り、Strip Engine Code をオフにするのが最も簡単ですが、
私のケースではビルドサイズの問題が発生しました。
そのため最善策は、link.xml にビルドに必要なクラスを追加して保持すること。
ただし注意点
link.xmlに書いても、ケースによってはビルドに含まれないものがある。- また .NET ランタイムを使う場合、レガシースクリプティングランタイムより大きい .NET クラスライブラリ API が提供されるため、コードサイズが増えることがある。
このサイズ増加を抑えるにはStrip Engine Codeの有効化が必要。 (特に未使用のダミーコードも削除できるため、実運用では重要。) - 参考リンク
私が遭遇したケースではアニメーション同期が崩れていたため、link.xml に AnimatorController と Animator コンポーネントを追加した。
クラッシュ時には該当 ID (例: ID 238) も出力される。
この ID は YAML Class ID Reference に定義されたクラス ID。
したがって、発生したエラー ID を照合するには次のリンクを参照するとよい。
2. cs0246: The type or namespace name could not be found (are you missing a using directive or an assembly reference?)
主な現象
- クラス作成時の名前空間問題。
using UnityEditorを使っている場合 -> UnityEditor クラスはビルドに含まれない。using xxxxを書いたまま実際には使っていない場合。
-> ビルド時にエラーが発生し、ビルドが強制終了される。
原因
- 基本的には、クラスが正しく宣言されていないか
usingでインポートされていないと発生するエラー。
発生時のビルド環境
- 作成したコードにタイプミスはない。
- エディタでは正常実行できる。
- 機能的な問題も発生しない。
- しかしビルド時にだけエラーで失敗する。
解決方法
- UnityEditor コードをプリプロセッサで囲む。
- 使っていない
using名前空間を削除する。
この記事は著者の CC BY 4.0 ライセンスの下で提供されています。

