Unity はレンダラーを優先順位にしたがってソートします。優先順位はそのタイプと用途によります。レンダラーのレンダリング順は レンダーキュー で指定できます。一般に、2 つのメインキューがあります。不透明キュー と 透明キュー です。2D レンダラーは主に透明キュー内にあり、Sprite Renderer、Tilemap Renderer、Sprite Shape Renderer のタイプを含みます。
透明キュー内の 2D レンダラーは一般的に以下の優先順位に従います。
ソート順を通常の優先順位と変える他の要因があります。これらの要素はプロジェクトによって異なります。
2D の Sorting Layer と Order in Layer (レンダラーの Property 設定) はすべての 2D で使用可能です。レンダラーは Inspector ウィンドウか Unity スクリプティング API からアクセスできます。レンダラーを既存の Sorting Layer に設定するか新しいレイヤーを作成して、レンダラーのレンダーキューでの優先順位を決定します。Order in Layer の値を変更して、同じ Sorting Layer 内の他のレンダラーとの優先順位を設定します。
レンダラーのレンダーキューのタイプは、マテリアル設定か、マテリアルのシェーダー設定で指定できます。これは、異なるマテリアルを使用しているレンダラーをグループ化しソートするのに便利です。詳細は、ShaderLab: SubShader 内の Tags を参照してください。
Camera コンポーネント は Projection 設定に基づいてレンダラーをソートします。2 つのオプションは Perspective と Orthographic です。
このモードでは、レンダラーのソート距離はカメラの位置からレンダラーへの直接距離です。
レンダラーのソート距離は、カメラのビュー方向に沿ったレンダラーの位置とカメラの間の距離です。デフォルトの 2D 設定では、ビュー方向は (0, 0, 1) 軸に沿っています。
Camera コンポーネントを Perspective またはOrthographic に設定すると、Unity は自動的にカメラの TransparencySortMode を選択したモードに合わせて設定します。Transparency Sort Mode は手動で 2 通りの方法で設定できます。
カメラの Transparency Sort Mode 設定は、Project Settings (Edit > Project Settings > Graphics) の Graphics カテゴリーにあります。 Default に設定すると、Camera コンポーネントの Projection 設定が優先されます。これが Default 以外のオプションに設定されている場合、Camera コンポーネントの Projection 設定は同じままですが、カメラの Transparency Sort Mode はそのオプションに変更されます。
追加のオプションとして、Project settings やスクリプティング API を通して カスタム軸のソートモード を設定できます。
このモードを選択すると、Project 設定 (Edit > Projecting Settings > Graphics > Transparency Sort Axis) で設定したカスタム軸に沿った距離に基づいてレンダラーをソートします。これは一般的に、等角タイルマップ を使って、タイルマップ上でタイルスプライトを正しくソートしレンダリングするプロジェクトで使用されます。詳細は、等角タイルマップの作成 を参照してください。
デフォルトでは、スプライトの Sort Point は Center に設定されており、Unity はその間の距離を測定します。カメラの Transform 位置とスプライトの中心を元にソートの際のレンダリング順序を決定します。代わりに、ワールド空間の Pivot 位置にスプライトの ソートポイント を設定することもできます。スプライトの Sprite Renderer プロパティ設定の Pivot オプションを選択し、Sprite Editor でスプライトのピボット位置を編集します。
Sorting Group はソートのために共通のルートを共有するレンダラーをグループ化するコンポーネントです。同じソートグループ内のすべてのレンダラーは、同じ Sorting Layer、Order in Layer、カメラへの距離 を共有します。詳細は、Sorting Group コンポーネントとその設定に関するドキュメントを参照してください。
Unity は、動的バッチ処理 などのレンダリングパフォーマンスを効率化するために、同じ マテリアル設定 を持つレンダラーをソートします。
複数のレンダラーが同じソート優先順位を持つ場合に、タイブレーカーは Unity がレンダラーをレンダーキューに並べる順序です。これは自身で制御できない内部プロセスなので、ソートオプション (Sorting Layers や Sorting Groups など) を使用して、すべてのレンダラーに明確なソート優先順位を持たせるようにする必要があります。