2D ゲームを制作している時 項目の描画順序は
細かく制御できければなりません
ひとつの方法としてはカメラとスプライト間の距離を
利用する方法がありますが
Unity ではこの他にも強力な
制御ツールがあります
それが Sorting Layer(ソーティングレイヤー)です
Sorting Layer は Sprite Renderer と
組み合わせて使用し カメラからの距離に関係なく
スプライトの描画順を指定します
ソーティングレイヤーには単一のスプライト以外に
スプライトのグループも割り当てられます
これらのレイヤーには並び順が指定され
ソーティングレイヤーに含まれる項目は
指定順に従い カメラからの
距離に関係なく描画されます
なおカメラの枠内に存在しない
スプライトは描画されないので注意してください
またより詳細な制御が必要な場合には
各スプライトの Order In Layer フィールドに
個別に値を指定してソーティングレイヤー内での描画順を
細かく制御することもできます
Sorting Layers 設定項目は
Tags & Layers パネルにあり
このパネルには次の 2 種類の方法で
アクセスできます
ひとつめは Sprite Renderer コンポーネントで
Sorting Layer > Add Sorting Layer を選択する方法
ふたつめはエディター上で Edit >
Project Settings > Tags And Layers を選択する方法です
この Tags & Layers パネルでは
ソーティングレイヤーを追加 / 削除 / 順番変更できます
レイヤーのうちひとつはデフォルトで
必ず存在しています
デフォルトレイヤーは名前変更 / 削除はできませんが
順番変更することは可能です
新たにソーティングレイヤーを追加するには + ボタンをクリックします
ソーティングレイヤー名を変更するには
名前フィールドを選択して新しい名前を入力します
ソーティングレイヤーの順番を変更するには
単純に目的の位置までクリック&ドラッグします
ソーティングレイヤーは
上から下の順番に描画され
最初に描画された項目が奥に
最後に描画された項目が最後のレイヤーとして手前に描画されます
ソーティングレイヤーにスプライトを割り当てるには
まず割り当てるスプライトを選択して
その Sprite Renderer コンポーネントの
Sorting Layer ドロップダウンリストで
割り当てるソーティングレイヤーを選択します
同一ソーティングレイヤー内で複数スプライトの
描画順を細かく指定したい場合には
Order In Layer に値を指定します
仮にキャラクターを複数のスプライトで
構成していて それらスプライトが
同一ソーティングレイヤーに
属しているとします
そういった場合には そのソーティングレイヤーの
Order In Layer を細かく指定することで
キャラクターを構成するスプライトの描画順を指定できるのです
なおソーティングレイヤーと
Order In Layer はグローバルで Unity の
全レンダラーで利用可能です
インスペクターにプロパティを公開するのは
Sprite Renderer だけですが たとえば
パーティクルレンダラーでもソーティングレイヤーを
指定して Order In Layer を入力することはできます
他のレンダラーでソーティングレイヤーと
Order In Layer を使う場合には
スクリプトを使って値を割り当ててください
ソーティングレイヤーの指定に
renderer.sortingLayerName で名前や
renderer.sortingLayerID で ID を使うこともできます
また Order In Layer プロパティを指定するには
renderer.sortingOrder を使います
レンダラーや Tags & Layers
ソーティングレイヤーや Order In Layer の詳細については
下記リンク先の情報を参照してください