본문 바로가기
게임 개발 일지/내일배움캠프 TIL

[Unity] Layer와 Tag의 역할

by 빛하_ 2024. 3. 7.

 

레이어(Layer)는 오브젝트들의 그룹을 만들고 관리하는 데 사용된다.

레이어는 씬의 일부분만을 렌더링 하거나, 물리적 충돌을 판정하는 데 사용된다.

유니티는 0 ~ 7까지의 기본 레이어와 8 ~ 31개의 커스텀 레이어를 제공하며 그 이상의 레이어는 만들 수 없다.

 

1. 레이어(Layer)

1.1 선택적 렌더링

레이어는 선택적 렌더링에 사용된다. 카메라로부터 특정 레이어만을 렌더링하도록 한다.   

카메라에는 레이어를 선택할 수 있는 Culling Mask가 있다. Default는 모든 레이어를 렌더링 한다. 

게임오브젝트는 하나의 레이어 그룹에 속할 수 있다. 게임오브젝트를 생성하면, Defalut로 설정되어 있습니다.

게임오브젝트는 하위 요소로 다른 레이어 그룹에 속한 게임 오브젝트를 가질 수 있다.

하위 요소를 다른 레이어 그룹에 속하게 함으로써, 존재는 하지만 보이지 않게 효과를 줄 수 있다.   

 

 

1.2 레이어 충돌 매트릭스 (Layer Conllision Matrix)

레이어는 오브젝트들의 그룹이다. 레이어를 기반으로 각 오브젝트 그룹들 간의 충돌을 관리할 수 있다.

레이어 충돌 매트릭스는 서로 충돌할 수 있는 레이어를 정의한다.

동일한 레이어끼리 충돌을 가능하게 하거나, 다른 레이어와의 충돌을 감지하지 않도록 설정할 수 있다.

 

충돌하는 모든 게임 오브젝트를 일일이 확인하는 것은 비효율적이다.

레이어 충돌 매트릭스는 게임 오브젝트들의 간의 불필요한 연산을 하지 않도록 한다.

시스템에서 충돌을 처리하지 않으므로 물리 연산에 드는 자원 및 시간을 절약할 수 있다.

결론적으로 성능 향상에 도움을 준다. 

 

 

1.3 레이캐스팅 충돌 (Raycasting Collision)

레이캐스팅( Raycasting )은 물리 연산을 사용해 빔을 쏘아 오브젝트 충돌을 판정한다. 

일반적으로 레이캐스팅은 모든 게임오브젝트에 대하여 충돌을 판단하기 때문에 특정 게임오브젝트를 판별할 때는 비효율적인 방식이다.

이럴 때 LayerMask를 설정해 특정 레이어와의 충돌을 판정할 수 있다.

LayerMask는 단일 레이어 뿐만 아니라 여러 개의 레이어, 모든 레이어를 선택하여 관리할 수 있다. 

물론 LayerMask는 특정 레이어들을 무시하도록 설정하는 경우에도 사용 가능하다.

 

 

2. 정렬 레이어 (Sorting Layer)

정렬 레이어는 게임오브젝트 내에서 렌더링 순서를 정의하며 2D 시스템에서 주로 사용한다.

특히 스프라이트를 정렬할 때 아주 유용하다.

예를 들어 8개의 스프라이트로 구성된 캐릭터를 만들 때, 8개의 스프라이트를 하나의 정렬 레이어로 설정하고

이후 정렬 레이어 안에서 추가적으로 정렬 순서를 정하여 캐릭터를 구현하는 방식이 있다.     

 

 

3. 태그(Tag)

Tags는 오브젝트들을 식별하는 데 사용한다. Layers가 그룹을 관리한다면, Tags는 단일 게임오브젝트를 관리한다.

Tags는 Layers보다 더 좁은 범위에서 오브젝트들의 확인한다.

1) 레이 캐스팅에서 LayerMask를 사용해 게임오브젝트들을 판단하고

2) 이후에 Tag로 게임오브젝트를 판별하여 대상을 확인한다.   

Tag는 Layer와 달리 많은 수의 Tag를 등록하여 오브젝트를 구별하는 데 사용할 수 있다.

게임오브젝트가 충돌했을 때,  충돌 대상의 확인은 CompareTag(Tag)를 사용한다. 

 

 

 

 

댓글