본문 바로가기

Unity Basic/03. Unity C# script basic

Unity Basic ch. 10] 스크립트 게임오브젝트 활성화/비활성화/태그/레이어

게임오브젝트에 Inspector> component를 살펴 보았다. 

 

이름 왼쪽에 체크 되있는부분이 게임 오브젝트가 활성화 되어있는 부분이다. 

이부분을 스크립트를 통해서 활성화와 비활성화를 시켜보자.

 

1) 비활성화시키기

-----------------------------------------

게임오브젝트.활성화시키기(비활성화);

=>

gameObject.SetActive(false);

-----------------------------------------

 

Start() 함수에 넣어보자.

========================

public class PlayerMove : MonoBehaviour
{
    void Start()
    {
        gameObject.SetActive(false);
        Debug.Log("비활성화");
    }

    void Update()
    {
       
    }
}

========================

 

 

플레이 버튼을 누르면 플레이어가 없어지고 Inspector에서 활성화 체크가 꺼진것을 볼 수 있다. 

 

 

참고로 비활성화가 되면 스크립트도 작동이 안된다.

 

 

 

 

 

 

2) 활성화시키기

 

이번에는 반대로 활성화 시켜보자.

-----------------------------------------

게임오브젝트.활성화시키기(활성화);

=>

gameObject.SetActive(true);

-----------------------------------------

 

false부분에 true로 넣어주면된다.

========================

public class PlayerMove : MonoBehaviour 
{ 
    void Start() 
    { 
        gameObject.SetActive(true); 
        Debug.Log("활성화"); 
    } 

    void Update() 
    { 
        
    } 
}

========================

 

플레이버튼을 누르면 아무런 변화가 없다. 활성화가 되있는 상태에서 활성화하라고 하니 변화가 없는 것이다.

 

 

 

 

 

 

3) 활성화 상태 보기

gameObject.activeSelf; 

결과를 true/false로 반환한다. 

 

다음과 같이 해보자. 

 

-----------------------------------------

게임오브젝트.활성화자신;

=>

gameObject.activeSelf; 

-----------------------------------------

 

========================

public class PlayerMove : MonoBehaviour 
{ 
    void Start() 
    {
        Debug.Log(gameObject.activeSelf); 
    } 

    void Update() 
    { 
        
    } 
}

========================

 

 

결과값으로 True를 반환하는 것을 볼 수 있다. 

 

 

 

 

 

 

4) 오브젝트 이름 알아내기

 

-----------------------------------------

게임오브젝트.이름;

=>

gameObject.name; 

-----------------------------------------

 

========================

public class PlayerMove : MonoBehaviour 
{ 
    void Start() 
    { 
        Debug.Log(gameObject.name); 
    } 

    void Update() 
    { 
        
    } 
}

========================

플레이 버튼을 누르고 실행시키면 

오브젝트의 이름을 알 수 있다. 

 

 

 

 

 

 

 

5) 태그 알아내기

player-idle의 tag를 Player로 정하고 tag를 이름을 디버그로 찍어보자.

-----------------------------------------

게임오브젝트.태그

=>

gameObject.tag

-----------------------------------------

========================

public class PlayerMove : MonoBehaviour
{

    void Start()
    {
        Debug.Log(gameObject.tag);
    }

    void Update()
    {
       
    }
}

========================

 

 

 

 

 

 

6) Layer 알아내기

레이어를 Water로 지정하고 다음과 같이 스크립팅해보자.

--------------------

게임오브젝트.레이어

=>

gameObject.layer

--------------------

========================

public class PlayerMove : MonoBehaviour 
{ 

    void Start() 
    { 
        Debug.Log(gameObject.layer); 
    } 

    void Update() 
    { 
        
    } 
}

========================

 

gameObject.layer를 찍어보면 4라고 숫자가 나오는데 이는 레이어에 인덱스 번호 이다.

 

 

 

* 레이어 이름 가져오기

그렇다면, Water를 가져올 수는 없을까?

방법이 있다. 레이어 번호를 이름으로 바꿔주 함수!

------------------------

레이어마스크.레이어를이름으로(레이어번호)

=>

LayerMask.LayerToName(레이어번호)

------------------------

레이어 번호 대신에 gameObject.layer를 넣어주면 현재 레이어 이름을 알 수 있다.

========================

public class PlayerMove : MonoBehaviour
{

    void Start()
    {

        Debug.Log(LayerMask.LayerToName(gameObject.layer));
    }

    void Update()
    {
       
    }
}

========================

 

 

 

이제까지 gameObject의 속성에 대해서 살펴 봤다. 

게임을 스크립팅하면서 중요하게 사용될 내용들이니, 복사 붙여넣기를 잘 활용해서 유용하게 사용해보자

 

다음 챕터에서는 Transform 속성요소를 살펴 보겠다.!!

 

 

 

gameObject 클래스 참조 : 

https://docs.unity3d.com/kr/530/ScriptReference/Object.html