본문 바로가기

unity tech.

컴포넌트 찾기 주의 사항

다음과 같은 구조의 GameObject 가 있다.



Item

ItemTextMesh



여기서 TextMesh 컴포넌트인 ItemTextMesh를 찾는다.



TextMesh itemText = item.GetComponentInChildren<TextMesh>();



그런데 여기서 itemText.gameObject 의 Active 상태가 false이면, itemText를 찾지 못한다(itemText = null).


이 때 Transform으로 찾으면 찾아진다.


Transform itemTransform = item.transform.FindChild("ItemTextMesh");

TextMesh itemText = itemTransform.GetComponent<TextMesh>();



그리고 또 하나. 이름이 Item인 gameObject 프리팹을 가지고,


GameObject item = (GameObject)Instantiate(itemPrefab, new Vector3(0, 0, 0), Quaternion.identity);


이렇게 프리팹을 Instantiate 했을 때, 원래의 "Item" 이름에 "(Clone)" 이 붙는다. 그래서,


transform.FindChild("Item(Clone)");


이런 식으로 찾아야 한다.


'unity tech.' 카테고리의 다른 글

자식 객체 Destroy 할 때 주의  (0) 2015.08.31
MonoBehavior 객체 사용시 주의  (0) 2015.08.31
컴포넌트 찾는 예들  (0) 2015.08.05
3D text 클릭 또는 터치  (0) 2015.08.05
프리팹 알파값 변경  (0) 2015.08.05