コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】UnityException: XXXX is not allowed to be called during serialization, call it from Awake or Start instead. Called from MonoBehaviour 'YYYY' on game object 'ZZZZ'.

概要

UnityException: XXXX is not allowed to be called during serialization, 
call it from Awake or Start instead. 
Called from MonoBehaviour 'YYYY' on game object 'ZZZZ'.

Unity エディタでコンパイルが完了した時に
上記の例外が発生する現象に遭遇した

[Serializable] を適用した
ISerializationCallbackReceiver を実装しているクラスを用意し、
OnBeforeSerialize 関数や OnAfterDeserialize 関数で
UnityEngine のクラスを呼び出している状態で
MonoBehaviour を継承したクラスの private 変数に定義し、
そのクラスをシーンのゲームオブジェクトにアタッチした状態でコンパイルが完了したら

前述の例外が発生した