게임 오브젝트, 인스펙터와 컴포넌트 (Inspector & Component)

Chu_uhC·2023년 7월 21일

게임 오브젝트 (Game Object)✨ 게임을 구성하는 물체(Object)

인스펙터 (Inspector)✨ 선택한 대상의 정보를 표시하는 곳
컴포넌트 (Component)✨ 프로그래밍을 위해 미리 만들어진 기능


플레이어가 마주할 물체, 화면을 촬영할 카메라, 입체감을 더 해줄 광원, 중력이 있는 물리엔진 우리가 게임하면 생각나는 것들은 '게임 오브젝트'에서 기능(컴포넌트)을 추가하여 만들 수 있다.

//딸깍....딸깍...딸깍... 카메라와 상자 완성

간편하게 기능을 추가할 수 있다는 건 게임 엔진이 가지는 큰 장점이다.
하지만 기본적인 틀을 추가하는 것일 뿐이며 이것을 이용하여 하나의 오브젝트로 만들려면 우리의 코딩이 절대적으로 필요하다.

🎉결론

애벌레부터 드래곤까지 될 수 있는 관동 지방의 게임 오브젝트





  1. 인스펙터를 통하여 컴포넌트의 값을 수정할 수 있다.

  1. 작성한 코드의 변수를 인스펙터에서 수정할 수 있다.

  • 멤버 변수에 public을 선언하거나 어트리뷰트 기능(#1 참조)을 이용하여 가능하다
  • 필드 값이 초기화 된 후 인스펙터의 값으로 다시 변경된다.
  • 유니티에서만 사용하는 타입도 가능하다.
  • 드래그 앤 드롭이 가능하다.

🚩 관련 함수

🍳 게임 오브젝트

/*새로운 오브젝트 생성*/
GameObject MyObject = new GameObject("이름"); // 이름을 안 넣어주면 기본값으로 됨.

/*오브젝트 파괴*/
Destroy(gameObject);

/*오브젝트 불러오기*/
GameObject.Find("이름");

/*오브젝트 복사 */
오버로딩 1: Instantiate(MyObject); // 복제한 건 이름 뒤에 (Clone)이 붙음.
오버로딩 2: Instantiate(MyObject,transform); // transform 인자값의 오브젝트가 부모가 됨.

/*오브젝트 이름 변경*/
MyObject.name = "변경할 이름";
🍳 인스펙터와 컴포넌트

/*컴포넌트 불러오기*/
Transform MyTrans = GetComponent<Transform>(); // 해당 컴포넌트를 반환값으로 준다.

/*컴포넌트 수정*/
Case 1: MyTrans.position = new Vector3(0, 0, 0); // 변수를 사용하여 변경
Case 2: GetComponent<Transform>().position = Vector3.zero; // 변수가 없어도 변경 가능하다.
        
/*컴포넌트 추가*/
MyObject.AddComponent<SpriteRenderer>();

/*스크립트 추가*/
MyObject.AddComponent<스크립트 이름>(); // MonoBehaviour를 상속 받은 클래스만 추가할 수 있다.

/*컴포넌트 제거*/
Case 1: Destroy(MyTrans); // Transform은 제거할 수 없다.
Case 2: Destroy(GetComponent<SpriteRenderer>());
  • gameObject는 This처럼 자신의 게임 오브젝트를 가르키는 함수이다.
    ※ gameObject = 자신 , GameObject = 클래스 ※

  • 인스펙터에 적힌 이름 그대로 적으면 대부분 찾을 수 있다.

GetComponent<Transform>().rotation.y;
// 트랜스폼 로테이션 Y값을 찾는다.

  • Transform은 GetComponent를 하지 않아도 된다.
GameObject MyObject;
MyObject.transform.position = new Vector3(0, 0, 0);




#1 어트리뷰트(Attribute)

profile
ChuNyan

0개의 댓글