UIの描画順はUnityの標準的な仕様に従って調整可能です。
UnityのUIの描画順はおおざっぱに言うと、各UIかそれより親にあるオブジェクトのCavasコンポーネントの設定でだいたい決まります。
- CanvasのRenderModeが「ScreenSpace-Overlay」になっているものは常に最前面に描画される
- CanvasのRenderModeが「ScreenSpace-Camera」または「World Space」になっているものは、設定されたカメラ(EventCamera)の描画順にしたがって描画される
- 複数カメラがある場合、カメラ同士の描画順は
- 作成時のUnityプロジェクトがBuiltInRenderPipeLineであれば、カメラのDepth
- 作成時のUnityプロジェクトが URPであれば
- カメラのRenderTypeがBaseの場合はPriority
- カメラのRenderTypeがOverlayの場合は
Overlay するBase側のカメラのStack項目の順番
- (URPで複数カメラを使うならこちらになる場合が多いはずです)
- 同じカメラのなかでの描画順は
- SortingLayerの順番
- SortingLayerが同じならOrderInLayerの順番
- SortingLayerOrderInLayerが同じなら、Hieralchウィンドウでのオブジェクトの順番(上にあるオブジェクトほど先に描画される)
- カメラのLayerMaskでチェックのあるLayerが、そのカメラがどのオブジェクトを描画するかの設定。
- 各オブジェクトのLayer(インスペクターウィンドウの右上の項目)が、
カメラのLayerMaskに対応
- 宴 プロジェクトをノベルゲームとして作成したであれば、UIは「UI」というLayer設定になっている
- 宴 プロジェクトを会話シーンとして作成したのであれば、
UIはその時に指定したLayer設定になっている( デフォルトでは「UtageUI」 )
独自UIのCanvas設定が「ScreenSpace-Overlay」の場合、そのUIは常に最前面に描画されてしまうので、その設定を変えるしかありません。
「ScreenSpace-Camera」にして、宴のUIで使用するカメラよりも奥に描画されるカメラ(Main Cameraなど)か、宴のUIと同じカメラを設定してください。
独自UIのCanvasに、宴のUIと同じカメラ(UI-Camera)を設定した場合、
UI-CameraのLayerMaskに「UI」を追加するなどして、独自UIのオブジェクトが宴のUIカメラにも描画されるようにしてください。
宴のUI全体の表示順は、AdvEngine-CanvasのSortingOrderで制御できます。
Canvasは入れ子にできますので、(Canvas設定したオブジェクトの子オブジェクトにもCanvasを設定可能)
BackLogだけほかのUIよりも手前にしたい場合は、BackLogオブジェクトにCanvasコンポーネントをAddComponentして、そこで設定を調整してください。
最近のUnityだと、プロジェクト作成時にURPがデフォルトで選択されるテンプレートになっているのですが、
今までの標準的なやりかた(BuiltIn Render Pipeline) とはカメラ周りの仕様が大きく変わっているため、インターネットで調べたときなどに情報が食い違うことがあるかもしれません。
もしURPでプロジェクトを作成したのであれば、その点ご注意ください。
2025年8月6日水曜日 1:40:57 UTC+9 ももんが: