KEN micro game labo. ブログ

KEN micro game labo.オフィシャルブログです。

「UnityEngine.JsonUtility.FromJson[T](System.String json)」がNullを吐きまくった話

えっと、スクショはないんですが。ある時を境に、Unityのエディタでこんな赤エラーが大量発生していたことがありました。

 

NullReferenceException: Object reference not set to an instance of an object UnityEngin
e.JsonUtility.FromJson[T] (System.String json) (at <859ec0a25e9a4bb4aec3c8cc42081ea0>:0) UnityEditor.StateCache`1[T].GetState (UnityEngine.Hash128 key, T defaultValue) (at <3cbc70f1ae9747e88614d75932150c59>:0) UnityEditor.Tools.OnEnable () (at <3cbc70f1ae9747e88614d75932150c59>:0) UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes(Type[])

 

コイツ赤エラーなせいか、プロジェクトをビルドするときにビルドエラーを起こす原因になっている疑惑があったのですが、ネット上を探しても発生した人、解決した人両者ともおらず。自作やインストールしたアセットのスクリプトでもないのでこっちから触ることも出来ない……。

 

色々とやってみたところ、Cinemachineパッケージが悪さをしていることが判明。で、Unityフォーラムを漁ってみたところ……

との書き込みを発見。そのフォルダというのが、

 

<プロジェクトのルートフォルダ>/Library/StateCache/

 

というフォルダ。

試しにUnityを閉じてそのフォルダを消して再起動したところ……

 

どうやらこのディレクトリの中にあるフォルダやファイルの参照が、Unityエディタを長期間にわたってガッチャガッチャしているうちにおかしくなってしまっていたようです。彼らは名前の通りただのキャッシュなので、消したとしても別に影響はなし、と。

 

エディタ上で発生する謎の大量Nullが気になる方、キャッシュ削除を試してみてください。