[Unity] Unity Object (GameObject) 이란 무엇인가

쥬라기·2025년 1월 29일

Unity

목록 보기
2/2

GameObject란

여러 컴포넌트의 집합이라고 할 수 있다.
GameObject 자체는 "빈 상자"이며, 별다른 기능을 갖고 있지않다.
따라서 빈 상자에 여러 기능(위치,물리,렌더링 등)을 추가해야하는데 이때 사용하는 것이 "컴포넌트"이다.

컴포넌트

컴포넌트는 GameObject가 특정 역할을 수행하도록 만들어주는 핵심 요소이다.

  • Transform : 위치,회전,크기 저장
  • Rigidbody : 물리 효과 적용 (중력, 속도 등)
  • Collider : 충돌 감지
  • Renderer : 화면에 보이게 렌더링
  • AudioSource : 소리를 재생

컴포넌트 가져오는 방법

컴포넌트를 가져올때에는

GameObject obj = GameObject.Find("object_0");  // 씬에서 오브젝트 가져오기
Rigidbody rb = obj.GetComponent<Rigidbody>();  // Rigidbody 가져오기

GetComponent<T>()를 사용하여 가져온다. 이때 T에는 특정 타입을 지정함으로써, 해당 타입의 컴포넌트를 찾아 반환하도록 한다.

위 코드처럼 Image 컴포넌트를 가져올 수도 있고,
컴포넌트를 가져오는 동시에 컴포넌트에 특정 처리를 할 수도 있다. (ex, fillAmount)

* transform 컴포넌트

다만 위 코드에서 transform 또한 컴포넌트에 속하지만, GetComponent를 사용하지 않았는데 그 이유는 "유니티에서 모든 오브젝트는 공간(위치,회전,크기) 정보가 있어야 하기 때문"이다.
즉 자주쓰이는 것이기에 컴포넌트임에도 바로 obj.transform과 같이 접근할 수 있도록 한 것이다.

Component 삭제

Destroy(obj.GetComponent<Rigidbody>());  // Rigidbody 제거

Destroy(컴포넌트)를 사용하여 GameObject에서 해당 컴포넌트를 삭제하도록 한다.

정리

GameObject director = GameObject.Find("GameDirector");
director.GetComponent<GameDirector>().DecreaseHp();

여기서의 GameObject는 Hierachy에 존재하는 실제 오브젝트.

GetComponet를 통해 가져오는 컴포넌트는, 해당 오브젝트에 설정해둔 c# script, 이미지 등을 말함

즉, 컴포넌트를 가져오면 c# script내에 있는 변수나 메서드에 접근 가능하다.
이를 통해 GameObject간 상호작용을 할 수 있다.

profile
기록하고 분석하는 개발자

0개의 댓글