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