LayerMask 활용하기

2024. 2. 13. 16:05·Unity
반응형

유니티에서 레이어 마스크는 특정 레이어에만 영향을 미치는 코드를 작성하는 데 필수적인 도구입니다. 이 글에서는 레이어 마스크의 내장 메서드를 활용하여 코드를 더욱 효율적이고 명확하게 작성하는 방법을 설명합니다.

 

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
'Unity' 카테고리의 다른 글
  • Rigidbody에서 오브젝트에 힘을 가할 때 사용되는 ForceMode
  • Unity에서 UnityWebRequest를 이용해 웹 접속하는 방법
  • Unity 카메라의 뷰포트를 설정하여 원하는 시야를 만들자
  • Camera : Orthographic과 Perspective
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    C#
    스크립트 실행
    스크립트 실행 순서
    리뷰관리
    리뷰이관
    codingcommunity
    카페24리뷰이관
    learntocode
    ipcamera
    rtsp
    devlife
    codingtips
    카페24리뷰
    라떼우유
    유니티
    믈레코비타멸균우유
    리스트
    programmerlife
    쇼핑몰리뷰
    unity
    셀레니움
    상품 리뷰 크롤링
    appdevelopment
    programming101
    파이썬
    cv2
    스마트스토어리뷰
    Python
    긴유통기한우유
    list
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
LayerMask 활용하기
상단으로

티스토리툴바