-
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 の詳細については
-
下記リンク先の情報を参照してください