LoginSignup
3
2

unityの"Missing Default Layout"バグの解決法

Last updated at Posted at 2024-02-17

"Missing Default Layout"

昨日、プロジェクトに皆さんのブランチを集積してアップデートしたあと、unityを起動しようとしたら、以下のようなエラーが出た。

image.png

"No valid user created or default window layout found." だあ?
何いっとんじゃと思いつつ、素直なワタクシは「はあ、わかりました」と "Revert Factory Settings" を押したのだけど、うんともすんとも動かず、Quitをするしかない。そしてQuitするとunityが終了する。要は unity起動不可能案件 だ。

ふざけんなよ、この野郎と調べたところ、今のところ対処方法は以下の2つに大別されることがわかった(面倒くさいのでURLは紹介しないが、このエラー名で検索するとunity forumなどがフツーに出てくる)。

  1. Libraryフォルダを削除する
  2. Libraryフォルダ内のArtifactDBを削除する

他の方法もあるのだけど、これより面倒なので、紹介しない。
そして一見すると、ArtifactDBを削除する方が楽そうなのでやってみたところ、これを削除するとunityがほぼ Libraryを再生成するのと同じ挙動 をするらしく、ド偉く時間がかかるうえに、Libraryフォルダのサイズが小さくならないので、再生成も兼ねてLibraryフォルダを捨てることを、これにブチ当たったみなさんにはお勧めしたい。

ちなみにウチのプロジェクトのワタクシのマシンでは300ギガバイトもあったLibraryフォルダがなんと100ギガ以下になったので、どう見たってLibrary捨てるのがお勧めだ。

同じエラー in Jenkins

で、unityも再起動できるようになったので、まあついでに、テストしなければならないブランチがあるので、Jenkinsも回すかあ、と Jenkinsを叩いたところいきなりエラーが出る。

image.png

時間がブラック企業なのは笑って許していただきたいが、ともかく「????」となって、エラーログを見たところ、なんとnullを吐いてunityが落ちている。以下は、unityが吐いたログの該当部分である。

2024-02-16 23:52:32  ProgressiveSceneManager::Cancel()
2024-02-16 23:52:32  NullReferenceException: Object reference not set to an instance of an object
2024-02-16 23:52:32    at UnityEngine.GUI.DoSetSkin (UnityEngine.GUISkin newSkin) [0x0001b] in <aa75c951dea44e839ed36863e532f0e2>:0 
2024-02-16 23:52:32    at UnityEngine.GUIUtility.SetSkin (System.Int32 skinMode) [0x00007] in <aa75c951dea44e839ed36863e532f0e2>:0 

unity内部のGUIのセットアップでコケてやがるので 「なんじゃこりゃあ」 となっていたところに、unityについてやたら詳しいチームメートが 「これ、同じエラーでLibrary消したら通るんじゃね?」 と、言ってきた(なお、時間がブラック企業じゃないかという話は聞かないw)。
まさかと思いつつも、やってみたらなんと通った!

image.png

というわけで、以下、結論

  1. unityはバッチモードであろうと内部的にはGUIは起動されている
  2. そして、GUIが起動されるがゆえに "Missing Default Layout"バグは同じように起こる
  3. これが起きたかはログで確認可能で、UnityEngine.GUI.DoSetSkin あたりでnullで落ちているログがあればソレである

いやはや、ひどい目にあったもので、こうして共有しておく次第である。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2