【Unity】Frame DebuggerでUIの描画順を見る方法|UIが消える/重なる問題の原因特定に

当ブログではアフィリエイト広告を含みます
Unity

「Canvas内のUIがなぜか表示されない…」
「思った通りの重なり順にならない…」
こんな悩み、Unity UI開発ではよくあります。原因を特定してみると些細なミスが原因だったりするのですが、そこにたどり着くまでに時間が溶けていくこともしばしば……。

そんなときに便利なのが、Frame Debugger(フレームデバッガー)先生です。
このツールを使えば、UIがどういう順序で描画されているのかをフレーム単位で追いかけることができます。

今回は、Frame Debuggerの基本的な使い方と、UI描画の問題を発見するポイントを紹介します。

Frame Debuggerとは?

Frame Debugger は、Unityで1フレーム内に発生したすべての描画コマンドを可視化できるツールです。そのため、実行中(Playモード中)に使う必要があります。
このツールを使うと、画面上のどのUIオブジェクトが、どのタイミングで描かれているかを、リアルタイムで確認できます。

開き方は簡単↓↓↓

Window > Analysis > Frame Debugger を選ぶだけ。

UIの描画順を確認するには?

Frame Debuggerを使って、実際にUIの描画順を見るには以下の手順を踏みます。

1. ゲームを実行(Play)する

まずはゲームをPlayモードで起動しましょう。
Frame Debuggerは実行中の1フレームを対象に動作します。

2. Frame Debuggerを開く

Window > Analysis > Frame Debugger でウィンドウを表示。
開いたら左上の Enable ボタンを押してデバッグを開始します。

画面は一時停止し、その時点のフレームに含まれる描画コマンド一覧が左側に表示されます。

3. 描画コマンドを順に追って確認

左のリストには、たとえば以下のような項目が並びます。

Draw Mesh (Image)
Draw Mesh (Text)
Draw Mesh (Button)
Draw Mesh (Sprite)
...

この順番こそが、Unityが実行しているUIの描画順です。
リストを選択すると、右側のGameビューでその描画がどんな見た目になるかを順に確認できます。

つまり、「どのタイミングでこのボタンが描かれたのか」「背景の後にTextが重なっているか」がすべて見えるというわけです。

どんなときに使うと効果的?

Frame Debuggerは以下のようなケースで活躍します。

✅ UIが表示されない

・Hierarchy上には存在している
・Activeにもなっている
・でもなぜか見えない!

そんなとき、描画順の最後の方で別の画像に上書きされていたというパターンがよくあります。Frame Debuggerで該当UIが描かれた後に何が上書きされたかを確認すれば、原因がすぐにわかります。

✅ UIの重なり順が想定と違う

「複数のCanvasを同時に運用」ということをしていると、描画順が意図しないことがよくあります。
Canvasごとの描画は階層順ではなく、Unity内部の描画スケジューリングに依存することもあるからです。

Frame Debuggerで「どのCanvasが先に描画されているか」確認することで、描画順の制御に必要なSorting LayerやOrder in Layerの調整ポイントが見えてきます。

✅ 無駄な再描画・負荷の原因を探したい

UIが動いていないのに、毎フレーム全Canvasが再描画されている場合、無駄な描画負荷の原因になっている可能性があります。

たとえば CanvasPixel PerfectWorld Space Canvas の設定によって、UIが毎フレーム変化しているように見えてしまうことがあります。

Frame Debuggerを使えば、どのUIがどの頻度で描かれているのかが明確になります。

Sorting Layer・Order in Layerの見直しにも便利

UIの描画順を制御するのに使われる Sorting LayerOrder in Layer
これらが正しく設定されていないと、「背景より前に出てほしいUIが出てこない…」という悲劇が起きます。

Frame Debuggerを使えば、今どのSorting Layerが描画中か・Orderの順番は合っているかが一目瞭然です。

調整に迷ったら、Frame Debuggerで「順番に描画された結果」を目視確認してみましょう。


まとめ:UI描画の不具合、Frame Debuggerで解決!

UIが表示されない・重なり順がおかしい・Canvasの順番が怪しい…

こうした「見た目」の問題は、Frame Debuggerを使えばフレーム単位で視覚的に確認できます。

  • UIがどういう順で描かれているか確認できる
  • Sorting LayerやCanvas順のデバッグができる
  • 実際のGameビューで“描かれた瞬間”が見える
  • 描画負荷の原因になっているUIも特定できる

エディタ上での調整に限界を感じたら、ぜひ一度Frame Debuggerを使ってみてください。
「なるほど、こいつが上書きしてたのか!」という発見があるかもしれませんよ。

Unity/C# をもっと体系的に学ぶには?
【現役メンターに質問しながら短期集中】
👉️ Unityコースで学んでみる [PR]
タイトルとURLをコピーしました