본문 바로가기

[Unity] 유니티 2D에서 객체별 렌더 순서 변경하기

Kwonriver 2023. 1. 8.
728x90

3D 환경에서는 원근투영으로 인해 카메라와 가까울수록 사물이 크게 보이고 잘 보여진다. 그러나 2D 환경에서는 직교투영에 의해 원근법이 적용되지 않아 모든 객체가 같은 Z축에 있는 것처럼 보인다. 이 때문에 큰 객체가 작은 객체를 가려서 전혀 보이지 않는 현상이 발생하는데 이를 렌더 순서를 변경하여 수정할 수 있다.

 


1.  Z 값 수정하기

유니티에서 카메라를 Ortho로 설정한다하여도 여전히 Z축과 Z값은 존재한다. 다만 존재할 뿐 값을 변경하여도 확대되거나 작아지지 않는다. 대신 이러한 Z값을 사용하여 렌더 순서를 변경할 수 있다. 카메라의 위치를 변경하지 않은 기본 상태에서는 Z값이 작을수록 앞 쪽에 렌더된다. 

 

 

Z값을 이용하여 정렬하였을 때의 또 다른 장점은 개발 중의 씬에서 쉽게 확인이 가능하다는 것이다. 카메라에 가까울수록 앞쪽에 렌더되기 때문에 직관적으로 객체간의 렌더 순서를 알 수 있다.

 


2. Order In Layer 값 사용하기

Sprite Renderer 컴포넌트의 Additional Settings에는 Order In Layer 항목이 있다. 이 값이 클수록 앞쪽에 렌더되어 카메라에 가깝게 그려진다.

 

 

원래 Order in Layer 항목은 소팅 레이어 내에서 렌더 순서를 정하기 위한 변수이다. 

 


3.  Sorting Layer 사용하기

Sprite Renderer 컴포넌트의 Additional Settings에는 Sorting Layer 항목이 있다. 이는 비슷한 영역군의 객체를 하나의 레이어로 묶어 관리하기 위한 용도이다. 태그를 사용하여 객체들을 관리하는 것과 유사한 기능을 한다. 다만 이는 화면에 그려지기 위한 용도이다. 

 

 

기본적으로는 Default 하나 밖에 없는데 Add Sorting Layer... 를 눌러 레이어를 추가할 수 있다. 추가한 레이어는 순서대로 하나씩 추가가 되는데 상위에 있는 레이어가 카메라와 가까운 위치에 그려진다. Layer 옆의 = 를 누른채로 드래그하여 순서를 변경할 수도 있다.

 

이렇게 수정한 레이어 내에서 Order In Layer 값을 이용하여 세부 렌더 순서를 설정할 수 있다.

 

 

 

 

728x90