본문 바로가기
PROGRAMING📚/Unity📑

[유니티 Unity] 부모, 자식 오브젝트 접근하는 방법과 자식 갯수 구하기

Ta이니 2022. 7. 17.
728x90
반응형

 

개발을 하다 보면 해당 Gameobject를 포함하고 있는

하위(자식) object들이나 상위(부모) object를 알아야하거나 

가져와야하는 경우가 많다. 

 

해당 접근 방법을 어떻게 사용하냐에 따라서 다양한 방법으로 오브젝트에 접근하는 방법이 있다.

 

 

1. 상위(부모) 오브젝트 접근하기

 

transform.parent는 해당 스크립트를 가진 오브젝트의 바로 위에있는 부모를 가져온다.

 

//현재 오브젝트의 부모 찾기
public class x : MonoBehaviour{
  GameObject parent = null;
  void Start() 
  {
      gameobject = transform.parent.gamObject; //해당 오브젝트 부모의 오브젝트
      gameobject = transform.GetComponentInParent<Gameobject>(); //해당 오브젝트 부모의 오브젝트
  }
}

 

만약에 해당 스크립트를 가진 Object가

부모의 부모(Object1) > 부모(Object2) > 자식(Object3, 현재 Object)일 경우,

현재 Object (Object3)부모 Object (Object2)에서 부모 Object(Object1) 를 불러 오면 된다.

 

 

 

2.하위(자식) 오브젝트 접근하기

tranform.GetChild(찾기 원하는 오브젝트 위치).gameObject 를 사용하면

해당 오브젝트의 위치를 찾을 수 있다.

 

// 첫 번째 자식 object 찾기
public class x : MonoBehaviour{
  GameObject child = null;
  void Start() 
  {
      gameobject = transform.GetChild(0).gameObject; //해당 오브젝트의 첫 번째 자식을 불러온다
      gameobject = transform.GetChild(1).gameObject; //해당 오브젝트의 두 번째 자식을 불러온다
  }
}

//오브젝트 이름으로 하위(자식) 오브젝트 찾는 방법 
public class x : MonoBehaviour{
  GameObject child = null;
  void Start() 
  {
      gameobject = transform.FindChild("찾기 원하는 오브젝트의 이름");
  }

 

 예시로 다음 스크립트는  리스트안에 담겨져 있는 오브젝트의 첫번째 자식의 Object를 비활성화 시키고

부모의 Button 속성을 불러와서 비활성화 시켜주는 코드이다. 

 

 

해당 위치에 있는 자식의 이름을 가져오는 방법

 

transform.GetChild(1).gameObject에 name을 붙여서 자식 오브젝트의 이름 뿐만아니라 

GetComponent를 이용해서 자식의 컴포넌트 속성을 가져와서 사용할 수 도 있다. 

 

728x90
반응형

댓글