Sorting Group (ソートグループ) を使用すると、ゲームオブジェクトを スプライトレンダラー と一緒にグループ化し、その中でスプライトをレンダリングする順序を制御できます。Unity は 1 つのゲームオブジェクトであるかのように、同じソートグループ内のスプライトレンダラーを一緒にレンダリングします。
ゲームオブジェクトをソートグループに配置するには、Sorting Group コンポーネントを加えます。これを行うには、ゲームオブジェクトを選択して Component > Rendering > Sorting Group の順に選択するか、ゲームオブジェクトの Inspector ウィンドウで Add Component ボタンを選択します。
Sorting Group コンポーネントをゲームオブジェクトに追加すると、Unity は、そのコンポーネントがアタッチされているゲームオブジェクトのすべての子ゲームオブジェクトに同じ ソートグループ を適用します。
空の親ゲームオブジェクトの Sorting Group に属する ‘Sprite’ 子オブジェクト
Unity は、Sorting Group の設定を使用して、シーン内の他のレンダラーとソートグループ内でレンダラーをソートする方法を決定します。詳細は 2D ソート を参照してください。
ソートグループ内のレンダラーをソートするために、Unity はソートグループ内のレンダラーの個々のソート設定を使用します。詳細は、ソートグループ内のレンダラーのソート を参照してください。
Unity は Sorting Group の Sorting Layer と Order in Layer の値を使用して、シーン内の他のソートグループとゲームオブジェクトの中で、レンダリングキューの優先順位を決定します。
プロパティ | 機能 |
---|---|
Sorting Layer | このドロップダウンメニューから ソートレイヤー を選択または追加して、レンダーキューでのソートグループの位置を決定します。Unity は Sorting Layer の設定での位置によって、ソートレイヤーの順番を決定し、リストに表示されている順にソートレイヤーをレンダリングします。ソートレイヤーの設定については、Tags and Layers を参照してください。 |
Order in Layers | Sorting Layer 内でこの ソートグループのレンダリング順序を設定します。Unity は低い値のレンダラーを最初にキューに送るため、それらは高い値のレンダラーの前に表示されます。 |
Sort At Root | このオプションを有効にすると、このソートグループ がネストされている場合、すべての親ソートグループを無視します。これにより、この ソートグループをルートレベルで他のレンダラーとソートグループに対して並べ替えることができます。 |
Sorting Layer を使ってスプライトをソートする方法の詳細は、2D ソートを参照してください。
Unityは、同じソートグループ内のすべてのレンダラーを、個々の Sorting Layer と Layer の Renderer プロパティ でソートします。Unity は、このソート処理中に各レンダラーの個々の Distance to Camera プロパティを考慮しません。代わりに、Sorting Group コンポーネントを含むルートのゲームオブジェクトの位置に基づいて、Sorting Group 全て (その子レンダラーすべてを含む) の Distance to Camera 値を設定します。
Unity がシーンの他のレンダラーとソートグループ内でソートグループをソートする場合、ソートグループ内部のソートはそのままです。
次の図は、ソート処理を示しています。
Unity は、同じソートグループに属するレンダラーをすべて 1 つのレイヤーとして扱い、グループ化されていないレンダラーを Sorting Layer と Order in Layer プロパティ設定に基づいてソートします。
エディターは、ソートグループの子である パーティクルシステム をそのソートグループ内の別のレンダラーとして扱います。そのため、パーティクルシステムの Sorting Layer と Order in Layer プロパティ設定に基づいて、他のレンダラーといっしょに内部でソートします。
ソートグループ内の他のレンダラーでパーティクルシステムをソートする場合、Unity はパーティクルシステムの Sorting Fudge 値を無視します。
ネストされた Sorting Group は、親ソートグループを持つ Sorting Group です。Unity は、ネストされた Sorting Group 内のレンダラーを最初に、親よりも先にソートします。ソーティンググループ内のレンダラーのソート を参照してください。
ネストされた Sorting Group の内部ソート順を決定した後、ネストされたソートグループを親 ソートグループ 内の他のレンダラーやソートグループと一緒にソートします。ネストされたソートグループは、ネストされたソートグループを子として持つことができます。Unity は最も内側の子 Group をそれぞれの親よりも先にソートします。
以下の図は、ネストされた Sorting Group のソート処理の例を示しています。
特定の状況では、Sorting Group がネストされ、シーンの Hierarchy に基づいて順序付けされる場合があります。しかし、このネストされたソートグループを、シーンの Hierarchy での位置を変えることなく、親ソートグループとは別にレンダリングしたい場合があります。
このオプションを有効にすると、この Sorting Group が親ソートグループを無視できるようになります。これにより、ゲームオブジェクトを別のトランスフォームに再度親にする必要なく、このソートグループを他のレンダラーとソートグループに対してグローバルにソートできるようになります。親を無視していないすべての子レンダラーやソートグループ は、このソートグループの下で並べ替えされます。
複数の 2D スプライトキャラクターを作成する最も一般的な方法は、Hierarchy ウィンドウで複数のスプライトレンダラーを並べて親にし、キャラクターを形成することです。このような複雑な複数のスプライトキャラクターを管理するために、Sorting Groups を使用できます。
以下の例では、スプライトレンダラーは同じ Sorting Layer に属していますが、Order in Layer の値が異なります。キャラクターのさまざまな部分を表示したい順にソートします。
Sorting Group と Sorting Layers を設定した後、キャラクターを プレハブ として保存し、必要なだけ複製することができます。
ただし、プレハブスプライトはすべて Sorting Layer と Order in Layer の値を持ち、他のプレハブと同じレイヤーにレンダリングされるため、プレハブキャラクターの異なる部分が交差し、正しくレイヤーにされない場合があります。
プレハブが独自のレンダリング順序を維持して正しく表示されるようにするには、各プレハブのルート GameObject に Sorting Group コンポーネントを加えます。編集したプレハブを保存します。すると、プレハブの現在および将来のすべてのインスタンスにも Sorting Group コンポーネントが含まれるようになります。
各プレハブには、同じ Sorting Layer コンポーネントと Order in Layer プロパティ設定を持つ Sorting Group コンポーネントが必要です。これは、同じ Sorting Layer にあるプレハブのレンダラーが、一貫性のない方法でレンダリングされる原因となります。なぜなら、それらは レンダーキュー で同じ優先順位を持つからです。
この問題を回避するには、各プレハブの Sorting Group コンポーネントに一意の Order in Layer の値を設定します。Unity は、最初に Order in Layer 値が低いソートグループをレンダリングし、値が高い ソートグループ は値の低いソートグループの上に重なります。Sorting Layers の編集と順序変更に関して詳しくは、Tags and Layers を参照してください。
各プレハブには、一意の Order in Layer 値を持つ Sorting Group コンポーネントがあり、Unity が各キャラクターとそのパーツを正しくレンダリングするよう制御しています。
SortingGroup
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.