AnyPortrait > 메뉴얼 > Sorting Layer/Order 설정
게임을 실행하면 여러개의 GameObject들을 하나씩 렌더링을 합니다.
이때, 렌더링 되는 순서를 설정하는 것은 매우 중요합니다.
일반적으로는 카메라로부터의 거리에 따라서 순서가 정해지지만, 이 순서를 직접 지정하는 것이 가능합니다.
Unity에서 제공하는 Sorting Layer와 Sorting Order를 이용하여 렌더링 순서를 정할 수 있습니다.
스크립트 문서는 관련 페이지를 참고하세요.
Bake 다이얼로그에 Sorting Layer와 Sorting Order를 설정할 수 있는 기능이 추가되었습니다.
Sorting Layer는 Edit > Project Settings > Tags and Layers에서 설정할 수 있습니다.
Sorting Order는 정수 타입의 값을 가지며 기본값은 0입니다.
Sorting Layer/Order 기능을 테스트하기 위해 Sprite Renderer를 가지는 GameObject을 옆에 두었습니다.
두 GameObject의 Sorting Layer는 동일합니다.
Sprite Renderer의 Sorting Order는 0입니다.
게임 실행 중에 Inspector에서 Sorting Layer와 Sorting Order를 수정할 수 있습니다.
게임을 실행한 상태에서 Sorting Order를 1로 설정하면 슬라임이 앞쪽에서 렌더링됩니다.
반대로 Sprite Renderer의 Sorting Order보다 작은 -1을 입력하면 슬라임이 뒤에서 렌더링이 됩니다.
AnyPortrait의 v1.1.8부터 Sorting Group 기능을 지원합니다.
Sorting Group 기능을 이용하면 그룹으로 존재하는 객체의 렌더링 순서를 결정할 수 있습니다.
이 페이지에서는 두가지 경우의 문제를 Sorting Group을 이용하여 해결하는 과정을 다룹니다.
캐릭터가 겹쳐있는 경우의 예시입니다.
AnyPortrait로 제작된 캐릭터처럼 여러개의 Mesh Renderer나 Sprite Renderer로 구성된 캐릭터들이 서로 겹치는 경우,
캐릭터간의 렌더링 순서가 정해지지 않아 복잡한 형태로 렌더링이 됩니다.
이 이슈는 위에서 설명한 Sorting Order나 Sorting Layer를 다르게 입력하여 처리할 수 있지만,
가장 좋은 방법은 Sorting Group으로 묶는 것입니다.
Sorting Group을 이용하기 전에 AnyPortrait로 만든 캐릭터의 설정을 변경해야합니다.
(1) 에디터를 열고 Bake 버튼을 눌러서 다이얼로그를 엽니다.
(2) Setting 탭을 선택합니다.
(3) Sorting Order Option 항목의 값을 Depth To Order로 변경합니다.
v1.1.8에서 추가된 설정인 Sorting Order Option은 각각의 메시의 Order가 어떤 값을 가질지 결정합니다.
옵션의 내용은 다음과 같습니다.
- Set Order : 기존의 방식입니다. Sorting Order 항목의 값이 일괄적으로 메시에 지정됩니다.
- Disabled : Bake할 때 메시들의 Order를 설정하지 않습니다.
- Depth To Order : 뒤에서부터 앞으로 Order가 증가합니다.
- Reverse Depth To Order : 앞에서부터 뒤로 Order가 증가합니다.
Sorting Group을 이용하지 않더라도, 필요에 따라 Sorting Order Option을 설정하시면 됩니다.
Sorting Order Option를 Depth To Order나 Reverse Depth To Order로 설정할 경우,
Depth가 증가하는 간격을 설정할 수 있는 Order Per Depth 옵션이 v1.3.0에 추가되었습니다.
Sorting Order Option을 Inspector UI에서 설정할 수도 있습니다.
AnyPortrait로 만든 캐릭터에 Sorting Group 컴포넌트를 추가합니다.
(1) Add Component 버튼을 누릅니다.
(2) Sorting Group 컴포넌트를 선택하여 추가합니다. (검색하여 찾는 것을 권장합니다.)
이제 메시들이 그룹 단위로 렌더링 순서가 결정되어 예쁘게 나타납니다.
두번째 예제입니다.
이 예제는 캐릭터들과 울타리들이 배치된 씬입니다.
카메라가 위에서 아래를 바라보는 2D 게임에서 일반적으로 사용되는 구성이며,
아래에 위치한 오브젝트가 앞에서 렌더링되어야 합니다.
하지만 현재는 오브젝트의 Y 좌표와 무관하게 렌더링 순서가 결정됩니다.
스크립트로 일일이 Sorting Order를 수정하는 방법도 있지만,
가장 편리한 방법은 프로젝트의 설정을 수정하는 것입니다.
(1) Project Settings을 열고 Graphics를 선택합니다.
(2) Camera Settings의 Transparency Sort Mode를 Custom Axis로 변경하고,
Transparency Sort Axis를 (0, 1, 0)으로 변경합니다.
이제 렌더링 순서를 결정하는 기준이 Z축에서 Y축으로 변경되었습니다.
이제 Sorting Group을 적용해봅시다.
캐릭터를 선택하고 Bake 다이얼로그 또는 Inspector UI에서 Sorting Order Option을 Depth To Order로 변경합니다.
캐릭터에 Sorting Group 컴포넌트를 추가합니다.
이제 캐릭터와 울타리들이 위에서부터 아래로 순서대로 렌더링이 됩니다.