2023. 8. 10. 14:27ㆍUnity
GameObject 클래스 : 유니티에서 사용되는 물체의 클래스 관리
MonoBehaviour 클래스 : 스크립트에 사용되는 클래스 관리, gameObject 변수를 통해 게임 오브젝트 관리
Unity 스크립팅 API
https://docs.unity3d.com/kr/2022.1/ScriptReference/index.html
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", 오브젝트 체크는 해제된다.
'Unity' 카테고리의 다른 글
[Unity] Enum / 키보드 입력(GetKey, GetButton) / 마우스 입력(GetMouseButton, 마우스 이벤트) (0) | 2023.08.11 |
---|---|
[Unity] Time.deltaTime으로 깜빡이는 오브젝트 만들기 (0) | 2023.08.11 |
[Unity] 유니티 Vector3 / 위치와 스케일 변경하기 (0) | 2023.08.08 |
[Unity] 유니티 함수의 종류 (제작 함수, 이벤트 함수, 제공 함수) (0) | 2023.08.07 |
[Unity] URP 프레넬 셰이더(Fresnel Shader) 응용 2 (홀로그램 만들기) (0) | 2023.07.20 |