デジタルコンテンツの制作

nekosuko.jp

Unity(C#) トラブル対処メモ ブログ 学習

【Unityエラー】UnityException: Load is not allowed to be called during serialization, call it from Awake or Start instead.

更新日:

原因

[System.Serializable]の属性が付いたクラスのコンストラクタの中に、

Resources.Load
GameObject.Find

などの、いわゆるUnityのスクリプトAPIというやつを呼ぶなというエラーです。呼ぶならAwakeメソッドやStartメソッドの中でやれとのことです。

上記コンストラクタの中でインスタンス化する他のクラスのコンストラクタに入っていてもダメです。

どこかで呼び出している可能性があるので根気よく探しましょう。

問題

なぜダメなのかというと、シリアル化の過程でエラーが発生する可能性があるからだそうです。

解決方法

エラーの指示どおり、AwakeメソッドやStartメソッドで問題の処理を呼べばいいのですが、MonoBehaviourを継承していないクラスの場合はコンストラクタと別のタイミング(別のメソッドの中)で呼び出すことです。

当たり前ですが別のメソッドで呼び出しても、そのメソッドをコンストラクタの中で呼んではダメです。

詳細

https://docs.unity3d.com/ja/2018.4/Manual/script-Serialization-Errors.html

-Unity(C#), トラブル対処メモ, ブログ, 学習

Copyright© nekosuko.jp , 2020 All Rights Reserved.