今回はUnityの小技というよりも、最近よく目にするエラーの対処方法についてのまとめです。
詳しい原因や再現方法は不明なため対処法のみ簡潔にまとめます。
自分用メモですが、似たようなエラーが出ている方は参考にしてみてください。
まとめ
以下の方法で解決します。
・Unityの再起動 (ほとんどの場合これで治る)
・Layoutの初期化
・LibraryフォルダーにあるUIElementsフォルダの削除
・AssetのReimport All
環境
Unity 2020.1.8f1
状況
Unity HubからProjectを開いたときに以下のようなエラーが大量に出現する。
NullReferenceException: Object reference not set to an instance of an object
UnityEditor.UIElements.UIElementsEditorUtility..cctor () (at <9ddd600ae5964fe0b21a870e08c53748>:0)
Rethrow as TypeInitializationException: The type initializer for 'UnityEditor.UIElements.UIElementsEditorUtility' threw an exception.
UnityEditor.UIElements.UIElementsEntryPoint.CreateRoot () (at <9ddd600ae5964fe0b21a870e08c53748>:0)
UnityEditor.UIElements.UIElementsEntryPoint.GetRootVisualElement (UnityEditor.EditorWindow window) (at <9ddd600ae5964fe0b21a870e08c53748>:0)
UnityEditor.UIElements.DefaultEditorWindowBackend.OnRegisterWindow () (at <9ddd600ae5964fe0b21a870e08c53748>:0)
UnityEditor.UIElements.DefaultEditorWindowBackend.OnCreate (UnityEditor.IWindowModel model) (at <9ddd600ae5964fe0b21a870e08c53748>:0)
UnityEditor.GUIView.set_windowBackend (UnityEditor.IWindowBackend value) (at <9ddd600ae5964fe0b21a870e08c53748>:0)
UnityEditor.GUIView.OnEnable () (at <9ddd600ae5964fe0b21a870e08c53748>:0)
UnityEditor.HostView.OnEnable () (at <9ddd600ae5964fe0b21a870e08c53748>:0)
Clearボタンを押すとエラーは消え、Playボタンから問題なくゲームの動作はできる。
ただし、オブジェクトを選択してもInspectorビューに何も表示されなくなる時がある。
対処法
再起動する
再起動すれば大体治ります。
ただし再起動してもエラーが再度表示されることがある場合は以下の方法を試した方がいいです。
Layoutの初期化
エディターのLayoutを初期化します。
画像ではDefaultにしていますが最初から用意されているLayoutならなんでもよさそうです。
以下UnityForumからの引用
... UIウィンドウのレイアウトを出荷時の設定にリセットした後、問題は修正されたようです。以前、プロジェクト設定、プロファイラー、シェーダーグラフなど、タブに多数のウィンドウがあったため、これらのウィンドウ設定の1つ以上が2020バージョンと互換性がない可能性があります。
LibraryフォルダーにあるUIElementsフォルダの削除
ProjectのLibraryフォルダにあるUIElementsフォルダを削除します。
AssetのReimport All
全てのアセットを再インポートします。
当然プロジェクトによってはかなり時間がかかるので、最後の手段としたほうがいいです。
まとめ
以下の方法で解決します。
・Unityの再起動 (ほとんどの場合これで治る)
・Layoutの初期化
・LibraryフォルダーにあるUIElementsフォルダの削除
・AssetのReimport All
私の場合ほとんど再起動で治ります。
治らない場合はUIElementsフォルダの削除で解決しています。
Unity2020で発生するようですが、似たようなエラーが出ている方は参考にしてみてください。
参考資料
今回紹介した方法はこちらのUnityForumから引用しています。