정렬 그룹 을 사용하면 그룹 게임 오브젝트를 스프라이트 렌더러와 함께 그룹화하고, 해당 스프라이트를 렌더링하는 순서를 제어할 수 있습니다. Unity는 스프라이트 렌더러를 동일한 정렬 그룹에서 함께 렌더링할 수 있습니다(단일 게임 오브젝트인 것처럼).
게임 오브젝트를 정렬 그룹에 배치하려면 Sorting Group 컴포넌트를 해당 게임 오브젝트에 추가하십시오. 이렇게 하려면 게임 오브젝트를 선택하고 Component > Rendering > Sorting Group 으로 이동하거나, 게임 오브젝트의 인스펙터 창에서 Add Component 버튼을 선택하십시오.
게임 오브젝트에 Sorting Group 컴포넌트를 추가하면 Unity는 컴포넌트가 연결된 게임 오브젝트의 모든 자식 게임 오브젝트에 동일한 정렬 그룹을 적용합니다.
Unity는 정렬 그룹의 설정을 사용하여 씬의 다른 렌더러 및 정렬 그룹 간에 렌더러를 정렬하는 방법을 결정합니다. 자세한 내용은 2D 정렬을 참조하십시오.
정렬 그룹 내에서 렌더러를 정렬하기 위해 Unity는 렌더러의 개별 정렬 설정을 정렬 그룹에 사용합니다. 자세한 내용은 정렬 그룹 내에서 렌더러 정렬을 참조하십시오.
Unity는 Sorting Group 의 Sorting Layer와 Order in Layer 값을 사용하여 씬 내 다른 정렬 그룹 및 게임 오브젝트의 렌더링 대기열 우선 순위를 결정합니다.
프로퍼티 | 기능 |
---|---|
Sorting Layer | 이 드롭다운 메뉴에서 정렬 레이어를 선택하거나 추가하여 렌더 대기열 내 정렬 그룹의 포지션을 결정합니다. Unity는 정렬 레이어 설정 내 해당 위치를 기준으로 정렬 레이어 순서를 결정하고, 리스트에 표시되는 순서로 정렬 레이어를 렌더링합니다. 정렬 레이어 설정에 대한 자세한 내용은 태그 및 레이어를 참조하십시오. |
Order in Layer | Sorting Layer 내에서 이 정렬 그룹의 렌더링 순서를 설정합니다. Unity는 값이 가장 낮은 렌더러를 렌더링 대기열에 먼저 넣어 값이 높은 렌더러보다 먼저 표시되도록 만듭니다. |
정렬 레이어를 사용하여 스프라이트 정렬과 Unity의 렌더러 정렬 기준에 대한 자세한 내용은 2D 정렬을 참조하십시오.
Unity는 해당 Sorting Layer 및 Order in Layer 렌더러 프로퍼티를 기준으로 동일한 정렬 그룹 내에서 모든 렌더러를 정렬합니다. Unity는 정렬 프로세스 동안 각 렌더러의 개별 Distance to Camera 프로퍼티를 간주하지 않습니다. 대신에 Sorting Group 컴포넌트가 포함된 루트 게임 오브젝트의 포지션을 기반으로 전체 정렬 그룹(모든 자식 렌더러 포함)의 Distance to Camera 값을 설정합니다.
정렬 그룹의 내부 정렬 순서는 Unity가 다른 렌더러 간의 정렬 그룹과 씬 내 정렬 그룹을 정렬할 때 변하지 않습니다.
다음 다이어그램은 정렬 프로세스를 보여줍니다.
Unity는 동일한 정렬 그룹에 속한 모든 렌더러를 단일 레이어로 취급하고, Sorting Layer 및 Order in Layer 프로퍼티 설정에 따라 그룹화되지 않은 렌더러를 정렬합니다.
에디터는 정렬 그룹의 자식인 파티클 시스템을 해당 정렬 그룹 내 다른 렌더러로 취급하고, 해당 Sorting Layer 및 Order in Layer 프로퍼티 설정__ 을 기반으로 다른 렌더러 간에 내부적으로 정렬합니다.
Unity가 정렬 그룹 내에서 다른 렌더러로 파티클 시스템을 정렬하는 경우 파티클 시스템의 Sorting Fudge 값을 무시합니다.
중첩된 정렬 그룹은 부모 정렬 그룹을 포함한 정렬 그룹입니다. Unity는 해당 부모보다 먼저 중첩된 정렬 그룹 내에서 렌더러를 정렬합니다(정렬 그룹 내 정렬 렌더러 참조).
Unity는 중첩된 정렬 그룹의 내부 정렬 순서를 결정한 후 중첩된 정렬 그룹을 부모 정렬 그룹 내 다른 렌더러 또는 정렬 그룹과 함께 정렬합니다. 중첩된 정렬 그룹은 중첩된 정렬 그룹을 자식으로 가질 수 있습니다. Unity는 최하위 자식 그룹을 먼저 정렬한 후 각 부모 그룹을 정렬합니다.
다음 다이어그램은 중첩된 정렬 그룹의 정렬 프로세스의 예를 보여줍니다.
2D 멀티 스프라이트 캐릭터를 만드는 가장 일반적인 방법은 계층 창에서 여러 개의 스프라이트 렌더러를 배열하고 부모를 지정하여 캐릭터를 형성하는 것입니다. Sorting Groups 를 사용하여 복잡한 멀티 스프라이트 캐릭터를 쉽게 관리할 수 있습니다.
아래 예에서 스프라이트 렌더러는 동일한 Sorting Layer 에 속하지만 다른 Order in Layer 값을 지니고 있습니다. Unity는 원하는 표시 순서로 캐릭터의 다양한 파트를 정렬합니다.
정렬 그룹과 정렬 레이어를 설정한 후 캐릭터를 프리팹으로 저장한 후 원하는 만큼 많이 복제할 수 있습니다.
하지만 프리팹 스프라이트는 모두 동일한 Sorting Layer 및 Order in Layer 값을 가지고 있고 다른 프리팹과 동일한 레이어에 렌더링하므로, 프리팹 캐릭터의 다양한 파트가 잘못 교차하거나 레이어링될 수 있습니다.
프리팹이 렌더링 순서를 일관되게 유지하여 정확하게 표시되도록 만들려면 각 프리팹의 루트 게임 오브젝트에 Sorting Group 컴포넌트를 추가하십시오. 편집된 프리팹을 저장하면, 프리팹의 모든 현재 및 미래 인스턴스도 Sorting Group 컴포넌트를 가집니다.
각 프리팹은 동일한 Sorting Layer 및 Order in Layer 프로퍼티 설정을 가진 Sorting Group 컴포넌트를 보유해야 합니다. 이 경우 동일한 Sorting Layer 에 있는 프리팹의 렌더러가 일관되지 않은 방식으로 렌더링됩니다. 이는 렌더러가 [렌더 대기열] 내에서 동일한 우선 순위를 가지고 있기 때문입니다.
이러한 문제를 방지하려면 각 프리팹의 Sorting Group 컴포넌트에 고유한 Order in Layer 값을 지정하십시오. Unity는 낮은 Order in Layer 값이 있는 정렬 그룹을 먼저 렌더링하며, 높은 값이 포함된 정렬 그룹은 더 낮은 정렬 그룹과 중첩됩니다. Sorting Layer 의 편집 및 순서 변경에 대한 자세한 내용은 태그 및 레이어를 참조하십시오.
각 프리팹은 Unity가 각 캐릭터와 해당 파트를 정확하게 렌더링할 수 있도록 고유한 Order in Layer 값을 가진 Sorting Group 컴포넌트를 보유합니다.