반응형
유니티에서 레이어 마스크는 특정 레이어에만 영향을 미치는 코드를 작성하는 데 필수적인 도구입니다. 이 글에서는 레이어 마스크의 내장 메서드를 활용하여 코드를 더욱 효율적이고 명확하게 작성하는 방법을 설명합니다.
1. 레이어 마스크 기초
- 레이어 마스크는 32비트 정수 값으로, 각 비트가 하나의 레이어에 해당합니다.
- 특정 레이어에 대한 비트를 1로 설정하면 해당 레이어가 마스크에 포함됩니다.
- 여러 레이어를 포함하려면 해당 레이어에 대한 비트를 OR 연산하여 마스크를 생성합니다.
2. 내장 메서드
- LayerMask.NameToLayer: 레이어 이름을 사용하여 레이어 인덱스를 얻습니다.
- LayerMask.GetMask: 레이어 이름 목록을 사용하여 레이어 마스크를 생성합니다.
- LayerMask.GetMask(string): 단일 레이어 이름을 사용하여 레이어 마스크를 생성합니다.
- LayerMask.IsValidLayerMask: 레이어 마스크가 유효한지 확인합니다.
- LayerMask.LayerToMask: 레이어 인덱스를 사용하여 레이어 마스크를 생성합니다.
- LayerMask.SelectLayer: 레이어 마스크에서 특정 레이어를 선택합니다.
3. 활용 예시
// 레이어 이름으로 레이어 마스크 생성
int layerIndex = LayerMask.NameToLayer("Player");
LayerMask playerMask = LayerMask.GetMask(layerIndex);
// 레이어 이름 목록으로 레이어 마스크 생성
string[] layerNames = { "Player", "Enemy" };
LayerMask playerEnemyMask = LayerMask.GetMask(layerNames);
// 레이어 마스크 유효성 검사
if (LayerMask.IsValidLayerMask(playerEnemyMask))
{
// ...
}
// 레이어 인덱스로 레이어 마스크 생성
LayerMask layerMask = LayerMask.LayerToMask(10); // 10번째 레이어
// 특정 레이어 선택
LayerMask selectedMask = LayerMask.SelectLayer(playerMask, 4); // 4번째 레이어 선택
// 레이어 마스크에 포함된 레이어 확인
if ((playerMask & (1 << layerIndex)) != 0)
{
// ...
}
4. 활용 팁
- 레이어 이름 대신 레이어 인덱스를 사용하면 코드 성능을 향상시킬 수 있습니다.
- 레이어 마스크를 직접 생성하는 대신 LayerMask.GetMask 메서드를 사용하여 코드 가독성을 높일 수 있습니다.
- LayerMask.IsValidLayerMask 메서드를 사용하여 유효하지 않은 레이어 마스크를 사용하는 오류를 방지할 수 있습니다.
'Unity' 카테고리의 다른 글
Rigidbody에서 오브젝트에 힘을 가할 때 사용되는 ForceMode (0) | 2024.02.21 |
---|---|
Unity에서 UnityWebRequest를 이용해 웹 접속하는 방법 (0) | 2024.02.16 |
Unity 카메라의 뷰포트를 설정하여 원하는 시야를 만들자 (0) | 2023.12.14 |
Camera : Orthographic과 Perspective (0) | 2023.12.13 |
Animator State Transition : Has Exit Time (0) | 2023.12.12 |