[Unity] 유니티 GameObject 클래스 정리

2023. 8. 10. 14:27Unity

728x90
반응형

GameObject 클래스 : 유니티에서 사용되는 물체의 클래스 관리

MonoBehaviour 클래스 : 스크립트에 사용되는 클래스 관리, gameObject 변수를 통해 게임 오브젝트 관리

 

 


 

 

Unity 스크립팅 API

https://docs.unity3d.com/kr/2022.1/ScriptReference/index.html

 

Unity 스크립팅 API

 

docs.unity3d.com

 

UnityEngine이라는 namespace를 사용하는 것을 알 수 있고, 사용할 수 있는 변수들이 표시되어 있다.

 

 

생성자로 새로운 게임 오브젝트를 만들어낼 수 있다.

 

 


 

 

게임 오브젝트 생성

public class Test : MonoBehaviour
{
    void Start()
    {
        GameObject obj1 = new GameObject();
    }
}

위의 코드를 실행시켜 보면 Hierarchy 창에 새로운 게임 오브젝트가 생성된 것을 볼 수 있다.

 

 

public class Test : MonoBehaviour
{
    void Start()
    {
        GameObject[] objs = new GameObject[]
        {
            new GameObject(), new GameObject()
        };
    }
}

위와 같이 배열을 이용하여 게임 오브젝트를 생성할 수도 있다. 이 경우 objs의 배열 데이터는 두 게임 오브젝트를 참조하며 힙 메모리 영역에 있고, 두 개의 new GameObject()는 힙 메모리 영역에 , objs의 레퍼런스 변수는 스택 메모리에 생성된다. 빈 게임 오브젝트가 Hierarchy 창에 계속 남아있다면 가비지 컬렉터에 의해 없어지지 않으므로 지우려면 다른 스크립트가 필요하다.

 

 

public class Test : MonoBehaviour
{
    void Start()
    {
        GameObject obj1 = new GameObject();
        new GameObject();
        print(obj1.name);
    }
}

그냥 new GameObject();만 사용해도 게임 오브젝트를 생성할 수 있고, obj1.name을 이용하여 오브젝트 이름을 출력할 수도 있다.

 

 


 

 

게임 오브젝트 이름 변경

public class Test : MonoBehaviour
{
    void Start()
    {
        gameObject.name = "Test";
        name = "Cube1";
    }
}

name 만으로도 이름 변경이 가능하다. MonoBehaviour 위로 참조를 올라가면 name을 쓰는 Object라는 클래스를 상속받을 수 있기 때문이다.

 


 

 

스크립트 컴포넌트 추가

public class Test : MonoBehaviour
{
    void Start()
    {
        gameObject.AddComponent<MoveScript>();
    }
}

MoveScript는 프로젝트 안에 이미 만들어져있는 스크립트 이름이다.

 

 


 

 

SetActive

게임 오브젝트의 활성화/비활성화하는 함수

public class Test : MonoBehaviour
{
    void Start()
    {
        gameObject.SetActive(false);
    }
}

 

 


 

 

외부 오브젝트의  name과 SetActive 컨트롤하기

public class Test : MonoBehaviour
{
    public GameObject obj1;
    void Start()
    {
        obj1.name = "Test";
        obj1.SetActive(false);
    }
}

이 경우 스크립트 상에 오브젝트를 끌어다 놓으면 해당 오브젝트의 이름과 SetActive가 변경되게 된다.

큐브를 끌어다 놓으면 큐브의 이름이 "Test", 오브젝트 체크는 해제된다.

728x90
반응형