エラー UnityEditor.DockArea.OnGui() に関する情報
About
UnityEditorでのデバッグ実行時に次のようなエラーが表示される場合があります。概ね問題なく動きますが、特定の条件下でデバッグが中断されます。またこのエラーについては、Unity(Editor)のバージョン間で表示の差異はあるかもしれません。しかしながら"UnityEditor.DockArea.OnGUI"に関連するエラーであればこの項目が解決の参考になる可能性は十分あるはずです。
NullReferenceException: Object reference not set to an instance of an object UnityEditor.DockArea.OnGUI () (at C:/BuildAgent/work/812c4f5049264fad/Editor/Mono/GUI/DockArea.cs:587) System.Diagnostics.Process:Start()
私の場合には、Unity側から外部プロセスを起動するスクリプトを開発しているときにこのエラーに遭遇しました。エラーにも表記されていますが、System.Diagnostics.Process.Start()メソッドを実行すると、このエラーが通知され、ゲーム(プログラム)の実行が停止しました。不可解なことに、このエラーは複数回通知されます。そしてProcess.Startメソッド自体は問題なく処理が終了され、例外も通知されず、外部プログラム(Process)も問題なく起動に成功していました。そのため発覚が遅れたのです。
- 検索しても私が遭遇したエラー表示と同種のエラー報告が発見されなかったため、バージョン間の差異があると考えています。
- NullReferenceExceptionの表記に騙されてはいけませんん。いずれの変数もnullではない状態でこの不具合は生じました。
原因と解決
解決
実際の解決については難しいことはなく拍子抜けしてしまうのですが、一度UnityEditor上のSceneウィンドウ/Gameウィンドウ(タブ)を閉じて、再度表示させるだけです。
原因
原因は未だに良くわかっていません。しかしながらいくつかこの問題を引き起こす可能性がある条件を推察できます。次の条件1がこの問題を引き起こす元であり、条件2がトリガーとなっている可能性があります。あるいは実行環境を変更した場合なども同種の問題が引き起こされるかもしれません。
- 外部プログラム/プロセスを実行する処理が含まれる。
- Unity(Editor)のバージョンが上がる/メジャーマイナー問わず。
私がこの問題の解決や推察に至ったのは、次のページや関連する不具合の情報を発見することができたためです。あつかっているエラーの表記は異なりますが、"UnityEditor.DockArea.OnGUI"に関連するエラーについて議論されています。このページ以外にも関連する情報はいくつか見つけることができますが、多くの場合にTerrainEditorの利用が不具合を起こしていたようです。
推察の理由はいくつかありますが、長くなり問題の解決に本質的に必要でない情報なので割愛します。概ねUnityのマイナーバージョンアップ前は同種の問題が発生していなかったこと、などです。