スクリプトシリアライズエラー
Diagnose and fix common script serialization errors in your project.
読み終わるまでの所要時間 4 分最終更新 1ヶ月前
特定の状況では、スクリプトのシリアル化によってエラーが発生する可能性があります。その一部について、修正方法を以下にリストアップします。
Unity スクリプティング API をコンストラクターやフィールドイニシャライザーから呼び出す
MonoBehaviour のコンストラクターやフィールドイニシャライザー内で GameObject.Find などのスクリプティング API を呼び出すと、エラー "Find is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call in Awake or Start instead. (Find は MonoBehaviour コンストラクタ― (またはインスタンスフィールドイニシャライザー) から呼び出すことはできません。代わりに Awake または Start で呼び出してください。)" が発生します。
この修正には、コンストラクター内ではなく、MonoBehaviour.Start 内でスクリプティング API を呼び出します。
逆シリアル化中の Unity スクリプティング API の呼び出し
System.Serializableこれを修正するには、シリアル化されたオブジェクトに対するスクリプティング API の呼び出しが、コンストラクター内で一切行われないように、コードを変更します。
スレッドセーフな Unity スクリプティング API
スクリプティング API の多くは、上記の制限の影響を受けます。一部の Unity スクリプティング API のみ、例外的に影響を受けず、どこからでも呼び出すことができます。該当する API は以下の通りです。
-
Mathf 機能
シリアル化でのエラーのリスクを軽減するために、呼び出す API メソッドは、Unity からのデータの取得や Unity でのデータの設定が不要な自己完結型のみとしてください。また、代わりの方法がない場合にのみ呼び出すようにしてください。