스크립트에서 오브젝트/컴포넌트 접근 및 활성화
POSTED AT 2011.02.11 17:28 | POSTED IN 프로그래밍/UNITY3Dunity3d의 씬내에 표시되는 객체들은 모두 GameObject로 구성되고,
세부 항목들이 Component로 포함되어 계층을 이루고 있다.
빈 GameObject를 만들고, 여러 항목을 추가해 사용할 수 있어
필요한 오브젝트들을 관리하기 편리하다.
하지만 스크립트상에서 각 오브젝트에 접근하기가 애매할 수 있는데,
이와 관련해 아는 내용만 포스팅한다.
1. Hierarchy 에서 게임오브젝트 찾기
전역메쏘드인 GameObject.Find() / GameObject.FindWithTag() 로 찾는다.
GameObject obj = GameObject.Find( typeof(MyObject) );
GameObject obj = GameObject.FindWithTag("MyObjectTag");
2. 부모 자식 오브젝트 접근
GameObject 는 자식이나 부모 객체 정보를 가지고 있는데, 실제론 GameObject가 가지고
있다기 보다 GameObject의 컴포넌트인 Transform 객체가 가지고 있다.
Transform은 월드좌표, 로칼좌표등을 관리하는 녀석이라
이녀석을 통해 부모나 자식 객체를 얻어올 수 있다.
GameObject child = transform.Find("ChildObject").gameObject;
GameObject parent = transform.parent.gameObject;
GameObject child2 = transform.Find("Child/ChildObject").gameObject;
3. 스크립트에 접근
게임 오브젝트까지 접근을 했으면, 포함된 컴포넌트는 GetComponent로 구한다.
MyBehaviour myScript = (MyBehaviour) child.GetComponent( typeof( MyBehaviour ) );
myScript.Something();
4. 자식 오브젝트 리스트
자식 오브젝트를 배열로 가져와 순차적으로 어떤 작업을 할 때 사용한다.
Transform[] objList = gameObject.GetComponentsInChildren(typeof(Transform));
foreach( Transform child in objList )
{
child.gameObject.GetComponent( ....);
}
5. 오브젝트 활성화/비활성화
초기에는 비활성화 되어있다가, 어느 순간에 각 오브젝트들을 활성화 할 필요가 있다.
이경우 각 오브젝트를 찾아 active = true; 를 해주어야 하는데,
gameObject.SetActiverecursively( true );
http://liveupdate.tistory.com/15
'게임엔진(GameEngine) > Unity3D' 카테고리의 다른 글
특정 폴더 내에 있는 프리팹을 로드 (0) | 2016.03.24 |
---|---|
Unity3D에서 자주 쓰고 있는 C# 코드 (2) - 충돌 관련 부분 (1) (0) | 2016.03.21 |
유니티 Vector3 new 는 스택에 생성된다 (3) | 2016.03.12 |
[Unity 유니티] Prefab(프리펩) 이란? (0) | 2015.09.04 |
Unite 2014 korea -코루틴 깊게 알아보고 재미있게 쓰기 스킬트리랩 아카데미 이득우 (0) | 2015.09.03 |