상상 너머 그 무언가...

게임오브젝트와 자식GameObject들의 특정 컴포넌트를 동시에 제어 (GetComponentsInChildren) 본문

개발관련(Development)/유니티3D(Unity3D)

게임오브젝트와 자식GameObject들의 특정 컴포넌트를 동시에 제어 (GetComponentsInChildren)

Clack 2011. 4. 25. 17:02


특정 gameObject와 그 자식 gameObject들이 가지고 있는 특정 컴포넌트들을 한군데에 모아
동시에 제어가 가능하다. GetComponentsInChildren 메소드가 바로 그것이다.

아래 이미지에서 보면 Cube에는 이름이 같은 많은 Capsule 자식(Children)이 있다.
각각 캡슐에는 Collider가 포함되어 있는데 이 많은 자식들의 Collider를 Tirigger 상태로 바꾸러면
자식들의 갯수만큼 반복해서 스크립트를 작성해야 하지만 GetComponentsInChildren 메소드를 사용하면
갯수가 몇개든 쫙~ 찾아서 하나에 담아준다.


 


public Collider[] colliders;

 // Use this for initialization
 void Start () {

        colliders = gameObject.GetComponentsInChildren<Collider>();

        foreach (Collider coll in colliders)
        {
            coll.isTrigger = true;
        }
 }

위 스크립트를 Capsule들의 부모 객체인 Cube에 적용시킨 뒤 play를 해보면 아래 이미지와 같이 여러개의 자식 객체들의 특정 컴포넌트의 속성값을 제어할 수 있다.