본문 바로가기

GameEngine/Unity [Memo]

[정리]Unity GameObject 접근

[과거 블로그 글입니다]


1. GameObject.Find()


- GameObject의 Static 메소드.

- 인자 값으로 string 형태의 문자열이 들어간다.



사용법


GameObject.Find("Hero"); - > 해당 Scene 에서 Hero라는 이름을 가진 오브젝트를 찾는다.

GameObject.Find("/Hero"); -> 해당 Scene 의 최상위 Hierarchy에서 Hero 검색 후 반환

GameObject.Find("/Objects/game/Hero"); -> 해당 Scene에서 지정된 Hierarchy 까지 찾아가 Hero 검색 후 반환 


2. Transform


Tranform.Find("Hero"); 자식 오브젝트 중에 Hero라는 이름을 가진 것을 찾는다. (부모는 검색할 수 없음)





3. Tag


ㄱ. 태그 지정

  - Hierarchy 에서 태그를 지정할 오브젝트를 선택 후 Inspector 창에서 Tag를 클릭후 태그를 선택. 태그를 만들고 싶으면 Add Tag를 한다.

  - 코드상에서의 지정은 GameObject 의 멤버 변수인 tag 에 String 형으로 태그를 넣어주면 된다.

   ex) currentTransform.gameObject.tag = "TAG";         // Transfrom 형인 경우 

   obj.tag = "TAG";                                               // GameObject 형인 경우 

ㄴ. 태그 찾기 

  - GameObject.FindGameObjectWithTag(검색할 태그) ; // 해당 태그를 가진 오브젝트를 가져옴 static 메소드

  - GameObject.FindGameObjectsWithTag(검색할 태그); // 해당 태그를 가진 오브젝트들을 전부 가져옴



해당 GameObject 를 접근해서, 그 오브젝트의 컴포넌트들을 또 접근할 수 있다.

컴포넌트들의 값 변경도 당연히 가능하다. 





Component  접근



GetComponent<가져올 컴포넌트 이름>(); 으로 가져올 수 있다.

GetComponents<가져올 컴포넌트 이름>(); 은 해당 이름의 컴포넌트 전부를 가져온다.


GetComponentInChildren<가져올 컴포넌트 이름>(); 해당 이름을 가진 컴포넌트를 '자식'에서 검색 

GetComponentInsChildren<가져올 컴포넌트 이름>(); 해당 이름을 가진 컴포넌트들을 '자식'에서 검색