개발관련(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를 해보면 아래 이미지와 같이 여러개의 자식 객체들의 특정 컴포넌트의 속성값을 제어할 수 있다.