🙆‍♀️

Unity エディタで再生したときに謎の NullReferenceException が出る

2023/02/09に公開

現象

  • エディタで実行(再生)した際に以下のようなエラーが出ます。
    • 示されている発症ポイントがプロジェクト内でなく、どこで何が起きたのか解りません。
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されているインスペクタは閉じなくても支障ありません。

原因

  • エラーの内容にInspectorWindowPropertyEditorとあるので、インスペクタが原因のようです。
    • 継承されたコンポーネントのインスペクタを複数同時に表示していると(、それらの開いているオブジェクトが異なっても)、再生時にエラーします。
  • 継承の仕方とか、カスタムエディタの作りとか、色々試行錯誤したのですが、解決には至りませんでした。

Discussion