24.01.23 TIL - Unity : Find & FindGameObjectWithTag() & FindObjectOfType<T>() , 게임 오브젝트를 찾는 메서드들

JJwoo·2024년 1월 23일

본 글의 내용은 저자 : 석윤경 , 『이토록 쉬운 유니티 게임 프로그래밍』, 루비페이퍼 를 참고하였음.



책을 보면서 다시 유니티의 Find 관련 함수를 배우고 있었다.

1. 게임 오브젝트를 문자열로 Find

public GameObject findCamera1; // 메인 카메라를 검색해서 담을 변수1 (부모 오브젝트 용)

findCamera1 = GameObject.Find("Main Camera");
//게임 오브젝트 중 "Main Camera" 라는 이름으로 검색해 변수에 할당

2. 자식 오브젝트 Find (자식 오브젝트는 transform으로 컴포넌트에 속한다)

일단 유니티의 Main Camera 오브젝트를 하나 복사하여 'Cube' 라는 오브젝트의 하위(자식)에 넣어주었다.

 public GameObject findCamera2; // 메인 카메라를 검색해서 담을 변수2 (자식 오브젝트 용)
 
 //자식 오브젝트중 Main Camera를 검색 한후, GameObject 컴포넌트를 가져와 변수에 할당
//현재 Main Camera는 Cube의 자식 오브젝트이기에 'Transform' 판정이다.
findCamera2 = transform.Find("Main Camera").gameObject;
//트랜스폼 상태인 메인카메라를 검색 하여,
//Gameobject 컴포넌트를 가져와 Gameobject형 변수(findCamera2)에 할당.

이런 식으로 검색하여 저장하는 과정을 배웠다, 흥미롭다.


🍳 FindGameObjectWithTag()

위 메서드의 인수에 오브젝트의 Tag 를 지정하면 해당 태그를 가진 오브젝트를 찾아준다. (즉, Tag 검색 기능이란 것)

다만 같은 씬 내에서 + 오브젝트에 검색 할 특정 태그가 부여 되어있어야 함.

Cude 라는 오브젝트의 Tag 화면

Main Camera 오브젝트는 기본적으로 MainCamera 태그가 붙어있기에 태그 검색 연습에 활용해보기로 함.

public GameObject findCamera3;
// 위와 동일한데, FindGameObjectWithTag() 함수에 쓸 변수 (태그 검색)
 
 
 //Main Camera라는 이름을 태그로 검색해 변수에 할당
findCamera3 = GameObject.FindGameObjectWithTag("Main Camera");
// ! 태그명 띄어쓰기 주의.

플레이 해보니 잘 검색되어 할당된 모습.


🍳 FindObjectOfType()

컴포넌트의 타입 검색.

T에 어떤 컴포넌트를 검색 할 지 명시하면 해당 컴포넌트를 검색하여 반환 한다.

단독의 or 수가 적은 특정 컴포넌트를 검색 할 때 좋다고 한다.

모든 오브젝트가 보유한 컴포넌트(gameObject, Transform)를 검색해버리면

전부 불러와 버리기에 검색의 의미가 없어지기 때문.

public Light DLlight2; // Directional Light의 Light 컴포넌트를 담을 변수, FindObjectOfType<T>() 컴포넌트 타입 검색용
  
  
---
  
//Directional Light의 Light 컴포넌트를 가져와 변수에 할당.
DLlight2 = FindObjectOfType<Light>(findCamera1);

플레이 해보니, FindObjectOfType<T>() 함수를 통해 잘 불러와진 것을 알 수 있었다.

profile
개발 모코코

0개의 댓글