Version: 2023.1
言語: 日本語
2D ゲームの作成
スプライトの使用法

2D ソート

概要

Unity はレンダラーを優先順位にしたがってソートします。優先順位はそのタイプと用途によります。レンダラーのレンダリング順は レンダーキュー で指定できます。一般に、2 つのメインキューがあります。不透明キュー透明キュー です。2D レンダラーは主に透明キュー内にあり、Sprite RendererTilemap RendererSprite Shape Renderer のタイプを含みます。

優先順位による透明キューの並べ替え順

透明キュー内の 2D レンダラーは一般的に以下の優先順位に従います。

  1. Sorting Layer と Order in Layer
  2. レンダーキューの指定
  3. カメラとの距離
  4. Sorting Group
  5. マテリアル/シェーダー
  6. タイブレーカー は、複数のレンダラーが同じソートの優先順位を持つ場合に発生します。

ソート順を通常の優先順位と変える他の要因があります。これらの要素はプロジェクトによって異なります。

Sorting Layer と Order in Layer

2D の Sorting LayerOrder in Layer (レンダラーの Property 設定) はすべての 2D で使用可能です。レンダラーは Inspector ウィンドウか Unity スクリプティング API からアクセスできます。レンダラーを既存の Sorting Layer に設定するか新しいレイヤーを作成して、レンダラーのレンダーキューでの優先順位を決定します。Order in Layer の値を変更して、同じ Sorting Layer 内の他のレンダラーとの優先順位を設定します。

レンダーキューの指定

レンダラーのレンダーキューのタイプは、マテリアル設定か、マテリアルのシェーダー設定で指定できます。これは、異なるマテリアルを使用しているレンダラーをグループ化しソートするのに便利です。詳細は、ShaderLab: SubShader 内の Tags を参照してください。

カメラとの距離

Camera コンポーネントProjection 設定に基づいてレンダラーをソートします。2 つのオプションは PerspectiveOrthographic です。

Perspective

このモードでは、レンダラーのソート距離はカメラの位置からレンダラーへの直接距離です。

Orthographic

レンダラーのソート距離は、カメラのビュー方向に沿ったレンダラーの位置とカメラの間の距離です。デフォルトの 2D 設定では、ビュー方向は (0, 0, 1) 軸に沿っています。

Camera コンポーネントを Perspective またはOrthographic に設定すると、Unity は自動的にカメラの TransparencySortMode を選択したモードに合わせて設定します。Transparency Sort Mode は手動で 2 通りの方法で設定できます。

  • Project Settings を開き、Graphics に移動し、Camera Settings の下で Transparent Sort Mode を選択します。
  • スクリプト API を使用してカメラの TransparencySortMode を設定します。

カメラの 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

デフォルトでは、スプライトの Sort PointCenter に設定されており、Unity はその間の距離を測定します。カメラの Transform 位置とスプライトの中心を元にソートの際のレンダリング順序を決定します。代わりに、ワールド空間の Pivot 位置にスプライトの ソートポイント を設定することもできます。スプライトの Sprite Renderer プロパティ設定の Pivot オプションを選択し、Sprite Editor でスプライトのピボット位置を編集します。

Sorting Group

Sorting Group はソートのために共通のルートを共有するレンダラーをグループ化するコンポーネントです。同じソートグループ内のすべてのレンダラーは、同じ Sorting Layer、Order in Layerカメラへの距離 を共有します。詳細は、Sorting Group コンポーネントとその設定に関するドキュメントを参照してください。

マテリアル/シェーダー

Unity は、動的バッチ処理 などのレンダリングパフォーマンスを効率化するために、同じ マテリアル設定 を持つレンダラーをソートします。

タイブレーカー

複数のレンダラーが同じソート優先順位を持つ場合に、タイブレーカーは Unity がレンダラーをレンダーキューに並べる順序です。これは自身で制御できない内部プロセスなので、ソートオプション (Sorting LayersSorting Groups など) を使用して、すべてのレンダラーに明確なソート優先順位を持たせるようにする必要があります。

2D ゲームの作成
スプライトの使用法