본문 바로가기
개발/Unity

유니티 - 스크립트로 레이어(Layer) 관리하기

by 피로물든딸기 2022. 5. 23.
반응형

Unity 전체 링크

 

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; 을 실행하면 LayerBlock으로 변경된 것을 알 수 있다.

 

Layer에서 8번의 정의가 Block이기 때문에 위와 같은 결과가 나오게 된다.

 

Add Layer를 눌러서 레이어를 사용자가 원하는 이름으로 정의할 수 있다.

아래와 같이 12번 Layer에 "TestLayer"를 추가하였으니, 코드에서 12로 바꾸면 TestLayer로 변경된다.


그러나 매번 Layer의 번호와 이름을 외우기도 힘들고, 코드에서도 가독성이 떨어진다.

LayerMaskNameToLayer 메서드를 이용하면 간단하게 해결할 수 있다.

스크립트를 아래와 같이 수정하고 실행해보자.

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:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글