반응형
Layer를 스크립트로 관리해보자.
먼저 큐브에 LayerTest.cs 스크립트를 추가하자.
레이어는 gameObject에서 바로 변경할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LayerTest : MonoBehaviour
{
void Start()
{
this.gameObject.layer = 8;
}
}
플레이 버튼을 눌러서 코드를 실행해보자.
layer = 8; 을 실행하면 Layer가 Block으로 변경된 것을 알 수 있다.
Layer에서 8번의 정의가 Block이기 때문에 위와 같은 결과가 나오게 된다.
Add Layer를 눌러서 레이어를 사용자가 원하는 이름으로 정의할 수 있다.
아래와 같이 12번 Layer에 "TestLayer"를 추가하였으니, 코드에서 12로 바꾸면 TestLayer로 변경된다.
그러나 매번 Layer의 번호와 이름을 외우기도 힘들고, 코드에서도 가독성이 떨어진다.
LayerMask의 NameToLayer 메서드를 이용하면 간단하게 해결할 수 있다.
스크립트를 아래와 같이 수정하고 실행해보자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LayerTest : MonoBehaviour
{
int Test_Layer_Name;
int Nothing_Layer_Name;
void Start()
{
Test_Layer_Name = LayerMask.NameToLayer("TestLayer");
Nothing_Layer_Name = LayerMask.NameToLayer("Nothing");
Debug.Log("Test_Layer_Name : " + Test_Layer_Name);
Debug.Log("Nothing_Layer_Name : " + Nothing_Layer_Name);
this.gameObject.layer = Test_Layer_Name;
}
}
Add Layer → Tags & Layers → Layers에 정의되어 있지 않은 "Nothing"은 -1을 리턴하고,
정의된 레이어는 해당되는 int 값을 리턴한다.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 - JsonUtility로 Json 파싱하기 : (1) 기본 (0) | 2022.05.29 |
---|---|
유니티 - 런타임 시 프리팹에 스크립트 추가하기 (Attach Script when Instantiate a Prefab) (0) | 2022.05.29 |
프로퍼티로 readonly 변수 만들기 (get; private set;) (0) | 2022.05.17 |
유니티 - 오브젝트를 선택된 상태로 만들기 : (4) 오브젝트 하나만 선택하기 (0) | 2022.05.17 |
유니티 - 마우스 스크롤로 카메라 줌 인 / 아웃 (Camera Zoom in / out with a Mouse Scroll) (0) | 2022.05.14 |
댓글