UnityにおけるUIの描画順とLayerの違い

TL;DR

  • Layer番号(0,1,2…) はオブジェクト分類用(衝突判定・カメラ制御)で描画順とは無関係
  • UIが前面に表示されるのはCanvasやSorting Layerの仕組み
  • 1つのCanvas内ではHierarchyの上下が描画順
  • 複数Canvasがある場合はSort OrderやOrder in Layerで制御

1. Unityの「Layer」とは?

Unityの「Layer」はオブジェクトを分類するための仕組みです。

用途は主に以下の2つ:

  • カメラのCulling Mask で映す/映さないを制御
  • 物理判定(Physics) で衝突する/しないを制御

例:

  • 0 = Default
  • 2 = UI
  • 3 = Player
  • 4 = Background

 注意:Layer番号は描画順とは無関係です。


2. UIの描画順が決まる仕組み

UIの描画は Canvas コンポーネントを通して行われます。

CanvasのRender Mode

  • Screen Space – Overlay→ ゲーム画面に常に最前面で描画
  • Screen Space – Camera→ 指定したカメラを基準に描画、基本的には最前面
  • World Space→ 3D空間に配置されるので、奥行きによって前後関係が決まる

3. Canvas内での前後関係

1つのCanvas内 では、Hierarchyの上下がそのまま描画順になります。

Canvas
 ├── Image   (下) → 奥に描画
 ├── Text    (中) → 中間
 └── Button  (上) → 手前

上にあるオブジェクトほど「手前」に表示されます。


4. 複数Canvasの前後関係

Canvasが複数ある場合は Sort Order / Order in Layer が使われます。

Canvas A (Sort Order = 0)
 └── 背景UI

Canvas B (Sort Order = 5)
 └── ポップアップUI

値が大きいCanvas Bが必ず前面に描画されます。


5. Sorting LayerとOrder in Layer

Canvasには Sorting Layer と Order in Layer を設定できます。

  • Sorting Layer:大きな分類(Default, UI, Popupなど)
  • Order in Layer:数値が大きいほど手前
Canvas A (Sorting Layer = Default, Order = 0)
 └── 通常UI

Canvas B (Sorting Layer = UI, Order = 10)
 └── ポップアップUI(手前に描画)

6. 誤解を招く図の例

一部の教材や書籍では「UIがLayer番号2にある」と図示され、背景やプレイヤーと同列に描かれています。

これは 分類表としては正しい ですが、前後関係の説明図としては誤解を招きます

正しくは:

  • Layer番号 は分類用
  • Canvas / Sorting Layer が描画順を決める

7. 図解で整理

Layer(分類)

0 = Default
2 = UI
3 = Player
4 = Background

※ 描画順とは関係なし


描画順(Sorting Layer / Canvas)

Background → Player → UI
奥             中間      手前

まとめ

  • Layer番号は分類ラベルであって描画順とは無関係
  • UIが前面に表示されるのはCanvasやSorting Layerの仕組み
  • 同じCanvas内ではHierarchyの上下が描画順
  • 複数Canvasがある場合はSort Order / Order in Layerで制御
  • 教材で「UIがLayer2にある」と書かれていても、それは「分類」であり「描画順」を示すものではない

参考:Canvas Renderer Mode

Screen Space – Overlay の場合

  • そのCanvasは常に最前面に描画されるため、他の World Space や Screen Space – Camera のCanvasよりも手前に必ず表示されます。
  • このとき 「Sorting Layer」や「Order in Layer」の設定は無視されます。→ なぜなら、OverlayはUnity内部で「最前面に強制合成」する仕組みだからです。

Screen Space – Camera の場合

  • 指定したカメラに対して「どの順番でUIを重ねるか」をSorting Layer / Order in Layer で制御できます。
  • 例えばポップアップUIを一番手前に出したいなら、Order in Layer を大きな値にすればOKです。

World Space の場合

  • これは「3D空間にオブジェクトとして存在するUI」なので、
    • Z座標
    • カメラのNear/Far Clip
    • Sorting Layer / Order in Layerの影響を受けます。


まとめ

  • Screen Space – Overlay → 最前面に強制描画、Order in Layer は効かない
  • Screen Space – Camera → Sorting Layer / Order in Layer が効く
  • World Space → 3D空間のZ+Sorting Layer / Order in Layer

訪問数 3 回, 今日の訪問数 3回

Unity

Posted by hidepon