GetComponentsInChildren<>() 자식오브젝트에서 활성/비활성 컴포넌트 찾기

2015. 7. 10. 16:28프로그래밍/Unity

반응형
SMALL

GetComponentsInChildren<T>()

 

를 이용하여 부모에 속한 모든하위 오브젝트들에 있는 T 컴포넌트를 찾아올수 있다.

 

그런데 여기서 비활성화 되어있는 오브젝트는 건너뛰는 것이 디폴트 설정 되어있다.

 

 GetComponentsInChildren<T>(bool disenableObjFind = false) 처럼 되어 있는듯...

 

그래서... 하위오브젝트중 꺼져있는 것도 포함하여 모두 검색하려면

빈 괄호 안에 true를 넣어주면 된다. 

 

 

GetComponentsInChildren<T>(true); 

 

이 옵션은 유니티 FInd류의 함수들 은 공통사항인것 같다.

 

 

 

=================15.09.07 추가====================

 

이름으로 비활성 게임오브젝트를 찾는 하드파인드..

 

 

       static public GameObject GameObjectHardFind (string str) {

         GameObject result = null;

         foreach ( GameObject root in GameObject.FindObjectsOfType(typeof(Transform)) ) {

             if (root.transform.parent == null) { // means it's a root GO

result = GameObjectHardFind(root, str, 0);

                 if (result != null) break;

             }

         }

         return result;

     }

 

     static public GameObject GameObjectHardFind (string str, string tag) {

         GameObject result = null;

         foreach ( GameObject parent in GameObject.FindGameObjectsWithTag(tag) ) {

             result = GameObjectHardFind(parent, str, 0);

             if (result != null) break;

         }

         return result;

     }

     static private GameObject GameObjectHardFind (GameObject item, string str, int index) {

         if (index == 0 && item.name == str) return item;

         if (index < item.transform.childCount) {

             GameObject result = GameObjectHardFind(item.transform.GetChild(index).gameObject, str,0);

             if (result == null) {

                 return GameObjectHardFind(item, str, ++index);

             } else {

                 return result;

             }

         }

         return null;

    }

반응형
LIST