
Unityで「GUI Error」「ArgumentException」が発生する不具合とは?IMGUI Debuggerドッキング時のエラー問題を解説
Unityの開発環境でデバッグツールを利用している際、突然コンソールにエラーが表示されて困った経験はないだろうか。特に最近のUnityバージョンでは、IMGUI Debuggerの配置方法によって「GUI Error」や「ArgumentException」が発生するケースが確認されている。
本記事では、このUnityエディタの不具合の概要、発生条件、影響範囲、そして現時点で考えられる対処方法について詳しく解説する。Unity開発者にとっては見逃せない重要な情報となるため、ぜひ最後まで確認してほしい。
IMGUI Debuggerをドッキングすると発生するUnityエラー問題
UnityのIssue Trackerに報告された内容によると、IMGUI Debuggerウィンドウを特定の方法で配置した際、コンソールにエラーが出力される不具合が確認されている。
具体的には、IMGUI Debuggerで監視対象となっているウィンドウの隣に、そのDebuggerウィンドウをドッキングした場合にエラーが発生する。
表示される主なエラーは以下の2つ。
-
GUI Error: Invalid GUILayout state in GUIViewDebuggerWindow view
-
ArgumentException: Getting control position when doing repaint
いずれもGUIレイアウト処理に関連するエラーであり、エディタ内部のGUI管理状態が不整合を起こしていることを示している。
エラーの再現手順
この不具合は特定の操作手順で比較的簡単に再現できる。
-
Universal 3Dテンプレートで新規Unityプロジェクトを作成
-
メニューから「Window > Analysis > IMGUI Debugger」を開く
-
「Inspected View」ドロップダウンを「Hierarchy」に変更
-
左側のInstructions一覧から任意の項目を選択
-
IMGUI DebuggerウィンドウをHierarchyウィンドウの隣にドッキング
-
Consoleウィンドウを確認
この状態でエディタを操作すると、前述のGUI ErrorやArgumentExceptionがコンソールに表示される。
エラーの原因と考えられる仕組み
Unityエディタは内部GUIの多くをIMGUI(Immediate Mode GUI)という仕組みで描画している。IMGUIは、フレームごとにGUIを再描画する方式であり、レイアウト処理のBeginとEndの整合性が非常に重要となる。
今回の不具合では、以下のような状態が発生している可能性がある。
-
Debuggerが監視対象ウィンドウのGUI描画をフックする
-
同じ描画タイミングで隣接ドッキングによる再描画が発生
-
GUIレイアウトグループの状態が不一致になる
その結果、GUILayoutの状態が破綻し、Invalid GUILayout stateのエラーが出力されると考えられている。
また、ArgumentExceptionはGUIコントロールの位置取得時に、想定より少ないコントロール数しか存在しない場合に発生する典型的なエラーである。
Hierarchyウィンドウ限定の問題ではない
一見するとHierarchyウィンドウ特有の問題に見えるが、実際にはそうではない。
IMGUIベースのウィンドウであれば、以下のようなエディタウィンドウでも同様の問題が起きる可能性がある。
-
Project
-
Inspector
-
Console
-
Custom Editor Window
つまり、IMGUI Debuggerが監視しているウィンドウの隣にドッキングすると発生する構造的な問題と考えられる。
影響を受けるUnityバージョン
現在確認されている影響バージョンは以下の通り。
-
Unity 2023.1.0 beta
-
Unity 6000.0.69f1
-
Unity 6000.3.11f1
-
Unity 6000.4.0 beta
-
Unity 6000.5.0 alpha
-
Unity 6000.6.0 alpha
比較的広いバージョン範囲で再現されていることから、特定の小さな変更ではなくIMGUI Debuggerの挙動に関わる部分に起因している可能性が高い。
なお、この問題は「Regression(回帰バグ)」ではなく、以前から存在していた可能性があるとされている。
現時点での回避策
現時点では正式な修正パッチは提供されていないが、いくつかの回避方法が考えられる。
1. IMGUI Debuggerを別エリアに配置する
最も簡単な対処は、監視対象ウィンドウの隣にドッキングしないこと。
たとえば以下の配置にするとエラー発生を回避できる場合がある。
-
別のタブグループに配置
-
フローティングウィンドウとして表示
-
画面の反対側に配置
2. デバッグ時のみ使用する
IMGUI Debuggerは通常の開発では頻繁に使用するツールではないため、
-
UI調査時のみ開く
-
通常は閉じておく
といった運用でも影響を最小限に抑えられる。
3. Consoleエラーを無視する
今回の問題はエディタ内部のGUI処理に関するものであり、ゲーム実行やビルドに直接影響するケースはほとんどない。
そのため、開発を継続する上ではエラーを無視しても問題にならない場合が多い。
UnityエディタのGUIデバッグ機能の重要性
IMGUI Debuggerは、Unityエディタ内部のGUI構造を確認できる強力なツールであり、特に以下の用途で役立つ。
-
Editor拡張の開発
-
Custom Inspectorの調査
-
IMGUIレイアウトの問題解析
-
エディタUIの挙動確認
今回のような不具合はあるものの、Unityエディタ内部の仕組みを理解するためには非常に重要なデバッグツールである。
今後の修正状況に注目
この問題は現在「検討中」として扱われており、将来的なUnity 6000系アップデートで修正される可能性がある。
Unityのエディタ拡張やGUI開発を行っている場合は、以下のポイントに注意しておくとよい。
-
IMGUI Debuggerの配置方法
-
GUIレイアウトエラーの発生条件
-
エディタのConsoleログ
特にエディタツールを開発しているエンジニアにとっては、GUIエラーの原因が自作コードなのか、エディタの既知の問題なのかを見極めることが重要になる。
Unityの更新情報やIssue Trackerの動向を継続的にチェックすることで、開発環境のトラブルを最小限に抑えることができるだろう。