Unity 정렬 그룹 사용법

개요

정렬 그룹(Sorting Group)은 Unity에서 스프라이트 렌더러와 게임 오브젝트의 렌더링 순서를 제어하는 데 사용됩니다. 이 API를 통해 게임 오브젝트를 그룹화하고, 그룹 내에서 렌더링 우선순위를 설정할 수 있습니다.

정렬 그룹 설정

정렬 그룹 추가

게임 오브젝트에 정렬 그룹을 추가하려면 다음 단계를 따릅니다: 1. 게임 오브젝트를 선택합니다. 2. 메뉴에서 Component > Rendering > Sorting Group을 선택합니다. 3. 또는 인스펙터 창의 Add Component 버튼을 클릭합니다.

이렇게 설정하면 해당 게임 오브젝트와 모든 자식 게임 오브젝트에 동일한 정렬 그룹이 적용됩니다.

정렬 그룹 프로퍼티

프로퍼티 설명
Sorting Layer 렌더링 대기열에서 정렬 그룹의 위치를 결정하는 레이어
Order in Layer 같은 Sorting Layer 내에서 렌더링 순서를 설정
Sort At Root 중첩된 경우 부모 정렬 그룹을 무시하고 루트 수준에서 비교

정렬 그룹 내 렌더러 정렬

Unity는 같은 정렬 그룹 내의 모든 렌더러를 개별 Sorting LayerOrder in Layer 설정에 따라 정렬합니다. 이때 카메라와의 거리는 고려되지 않습니다.

중첩된 정렬 그룹

중첩된 정렬 그룹은 부모 정렬 그룹을 포함하여 내부에 렌더러를 정렬하는 그룹입니다. 이러한 그룹이 어떻게 렌더링되는지는 부모 그룹의 우선순위와 연결되어 있습니다.

활용 예제

2D 캐릭터 생성

2D 멀티 스프라이트 캐릭터를 만드는 방법: - 여러 스프라이트 렌더러를 계층 창에서 정렬한 다음, 하나의 부모 오브젝트로 설정합니다. - 생성된 캐릭터를 프리팹으로 저장한 후, 필요에 따라 복제합니다.

프리팹 렌더링 문제

모든 프리팹에 동일한 Sorting LayerOrder in Layer 값을 설정하면 렌더링 순서가 일관되지 않게 될 수 있습니다. 이를 방지하기 위해 각 프리팹의 루트 게임 오브젝트에 Sorting Group 컴포넌트를 추가하고 유니크한 Order in Layer 값을 설정합니다.

// 예제 코드: 정렬 그룹 컴포넌트를 추가하는 방법
GameObject myGameObject = new GameObject();
SortingGroup sortingGroup = myGameObject.AddComponent<SortingGroup>();
sortingGroup.sortingLayerName = "Default";
sortingGroup.sortingOrder = 0;

결론

Unity의 정렬 그룹을 사용함으로써 스프라이트의 렌더링 우선순위를 효과적으로 관리할 수 있습니다. 이 기능을 잘 활용하면 복잡한 2D 캐릭터와 장면을 보다 쉽게 컨트롤할 수 있습니다.