UnityEditorの便利な機能、カスタムウィンドウを作って画面に表示したままUnityを閉じます。再び開きます。すると、
This can happen if layout contains custom windows and there are compile errors in the project.
というメッセージが表示されて、ウィンドウレイアウトを作り直す羽目になってしまいます。カスタムウィンドウを閉じて終了した場合は大丈夫で、さらに、大丈夫なものとそうでないものがある、という意味の分からない状況。
さんざん悩んだんですが、どうやら
カスタムウィンドウのクラス名とファイル名は同じでないといけない
ようです。例えば、EditorWindowを派生したHogeEditorWindowというカスタムウィンドウクラスを作る場合は、HogeEditorWindow.csというファイルに保存しなければなりません。Hoge.csやHogeEditor.csではダメです。
おそらくレイアウトファイルの解釈部分で、本来はクラス名で判別すべきところをファイル名にしているところがあるように思われます。ここらへんはUnityのバージョンによって異なる可能性がありますが、5.4.1f1ではこんな感じでした。
3時間返せー。