Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【小技】UnityProjectを開いた時に発生するUIElementsのエラーの対処【Unity】

今回はUnityの小技というよりも、最近よく目にするエラーの対処方法についてのまとめです。
詳しい原因や再現方法は不明なため対処法のみ簡潔にまとめます。
自分用メモですが、似たようなエラーが出ている方は参考にしてみてください。

 

まとめ

以下の方法で解決します。
・Unityの再起動 (ほとんどの場合これで治る)
・Layoutの初期化
・LibraryフォルダーにあるUIElementsフォルダの削除
・AssetのReimport All

 

 

環境

Unity 2020.1.8f1

 

 

状況

Unity HubからProjectを開いたときに以下のようなエラーが大量に出現する。

f:id:Raspberly:20201127023834p:plain

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ならなんでもよさそうです。

f:id:Raspberly:20201127031728p:plain

以下UnityForumからの引用

... UIウィンドウのレイアウトを出荷時の設定にリセットした後、問題は修正されたようです。以前、プロジェクト設定、プロファイラー、シェーダーグラフなど、タブに多数のウィンドウがあったため、これらのウィンドウ設定の1つ以上が2020バージョンと互換性がない可能性があります。

 

LibraryフォルダーにあるUIElementsフォルダの削除

ProjectのLibraryフォルダにあるUIElementsフォルダを削除します。

f:id:Raspberly:20201127032424p:plain

 

AssetのReimport All

全てのアセットを再インポートします。
当然プロジェクトによってはかなり時間がかかるので、最後の手段としたほうがいいです。

f:id:Raspberly:20201127031320p:plain

 

 

 

 

 

まとめ

以下の方法で解決します。
・Unityの再起動 (ほとんどの場合これで治る)
・Layoutの初期化
・LibraryフォルダーにあるUIElementsフォルダの削除
・AssetのReimport All

 

私の場合ほとんど再起動で治ります。
治らない場合はUIElementsフォルダの削除で解決しています。
Unity2020で発生するようですが、似たようなエラーが出ている方は参考にしてみてください。

 

 

参考資料

今回紹介した方法はこちらのUnityForumから引用しています。

forum.unity.com