🙆♀️
Unity エディタで再生したときに謎の NullReferenceException が出る
現象
- エディタで実行(再生)した際に以下のようなエラーが出ます。
- 示されている発症ポイントがプロジェクト内でなく、どこで何が起きたのか解りません。
NullReferenceException: Object reference not set to an instance of an object
UnityEditor.PropertyEditor.DrawEditors (UnityEditor.Editor[] editors) (at <~>:0)
UnityEditor.PropertyEditor.RebuildContentsContainers () (at <~>:0)
UnityEditor.InspectorWindow.RedrawFromNative () (at <~>:0)
環境
- Unity 2021.3.18f1 (LTS)
- Windows 11
条件
- シーンに、uGUI (
UnityEngine.UI
)を継承したコンポーネントがある。-
CustomEditor
などのエディタ拡張を行っていなくても該当するようです。
-
- 当該コンポーネントがアタッチされた
GameObject
を複数のインスペクタで開いている。
回避方法
- エディタの何処かで複数のインスペクタが開いていますので、1個を残して閉じてください。
- 懸案のオブジェクト以外で
Lock
されているインスペクタは閉じなくても支障ありません。
原因
- エラーの内容に
InspectorWindow
やPropertyEditor
とあるので、インスペクタが原因のようです。- 継承されたコンポーネントのインスペクタを複数同時に表示していると(、それらの開いているオブジェクトが異なっても)、再生時にエラーします。
- 継承の仕方とか、カスタムエディタの作りとか、色々試行錯誤したのですが、解決には至りませんでした。
Discussion