Sorting Group は、 Sprite Renderers によるレンダリングの順序を変えるコンポーネントです。これを利用すると、同じルートを共有するレンダラーをまとめて 1 つのグループとしてソートできます。Unity のレンダラーは、レイヤー内の順序、カメラからの距離など、いくつかの基準によってソートされます。
Sorting Group コンポーネントを利用するには、Sorting Group コンポーネントを ゲームオブジェクト のルート (グループとしてソートしたい複数の親ゲームオブジェクト) に加えます。ゲームオブジェクトのルートを選び、それから、メインメニューで Component > Rendering > Sorting Group の順に選択します。
Sorting Group は、シーンビュー内で視覚的に表示されません。空のゲームオブジェクトに加えて使用します。多くのゲームオブジェクトがあり、それらをまとめて 1 グループとしてソートを適用する場合に便利です。
Sorting Group は他のレンダラーに依存せず、ゲームオブジェクトとその子孫のゲームオブジェクトにアタッチされているレンダラーが一緒にレンダリングされます。
プロパティー | 機能 |
---|---|
Sorting Layer | レンダリングのときにスプライトが重なる順番を決定するのに使用するレイヤーをドロップダウンで選択します。 |
Order in Layer | 同じレイヤー内で、スプライトの重なる優先順位を設定します。数が小さいものが先にレンダリングされ、大きい数をもつものが、重ねられてレンダリングされます。 |
Unity は、Sorting Layers のコンセプトを利用して、スプライトをグループに分け (Sorting Group)、重ねる優先順位を決定します。優先順位の低い__Sorting Layer__ を持つ Sorting Group の上に、優先順位の高い__Sorting Layer__ の Sorting Group が重なります。
同じ Sorting Layer 内の 2 つ以上のオブジェクトが重なることがあります (例えば、下の例に示すような横スクロールゲームの 2 つのプレイヤーキャラクター)。Order in Layer プロパティーを使用すると、同じレイヤー内の複数の Sorting Group に一貫した優先順位を適用することができます。Sorting Layer と同じように、最初に Order in Layer の値が小さいものがレンダリングされ、後からレンダリングされる値が大きい Sorting Group によって重ねられます。 Sorting Layers の編集に関する詳細は、タグとレイヤー のドキュメントを参照してください。
Sorting Group の子孫は最も近い他の Sorting Group または隣の Sorting Group の子孫に対してソートされます (ソートが距離によるものか、Order in Layer によるものかによって決まります)。 つまり、 Sorting Group は自身の子孫のためだけにローカルのソート空間を生成します。これにより、グループ内の各レンダラーを Sorting Layer と Order in Layer を利用してソートすることが可能ですが、ローカルでは含んでいる Sorting Group に対してソートします。
ネスト式の Sorting Group は同じグループの他のレンダラーに対してソートされます。
ただし、Hierarchy ウインドウで Sorting Group に属さないゲームオブジェクトは、1 つのレイヤーとしてまとめてレンダリングされます。そして、レンダラーは、 Sorting Layer と Order in Layer に基づいてソートされます。
Sorting Group の使用例
Sorting Group は一般的に 2D ゲームにおいて、いくつかのスプライトで構成される複雑なキャラクターに利用されます。この例では Hierarchy に複数レンダラーをもつ 2D キャラクターを使用します。
このキャラクターは 1 つの Sorting Layer 内で複数の Order in Layers を使ってボディパーツをソートしています。それから、キャラクターは プレハブ として保存され、ゲーム中に何度も複製できます。
以下の表示のように、複製するときにボディパーツは同じレイヤーにあるため、互いに重なり合います。
期待する結果は、1 つのキャラクターのレンダラーがすべて一緒にレンダリングされてから、次のキャラクターがレンダリングされることです。現在の状態は、互いに通り抜けているように見えます。両方のキャラクターがブレンドされているというよりも、1 つが他方よりカメラに近いように見えます。
キャラクターのルートに加えた Sorting Group コンポーネントによって、ボディパーツが重なり合わず、混合しないようにします。