게임 오브젝트 찾는 방법하면

GameObject.Find("오브젝트 이름");

이게 제일 기본이 될 수 있습니다.


그런데 게임을 만들다 보면 A라는 오브젝트의 부모 오브젝트 또는 자식 오브젝트가 필요한 경우가 종종 생깁니다.

그럴때마다 하이어라키에서 부모 오브젝트 이름을 직접 찾아서 GameObject.Find("오브젝트 이름");을 사용할 수도 없지요.

게임 개발중에 A의 부모 오브젝트 이름이 바뀌어버리면 코드에서도 다 찾아서 바꿔주어야 하니까요.

그리고 GameObject.Find 자체가 하이어라키에서 String형을 찾아다가 비교하는 작업이기때문에 비용이 큰 작업이기도 하구요.




먼저 A라는 오브젝트의 부모를 찾는 방법입니다.




하이어라키에 이런 구조로 오브젝트가 부모 - 자식 관계를 형성하고 있을 때,

gameObject.transform.parent를 사용하면 됩니다.


parent 이후로는 .name 또는 .transform.position 등을 사용하여 오브젝트의 특정 정보를 받아오는 것도 가능합니다.




다음과 같이 비활성화를 시킬 수도 있겠네요.





다음은 자식입니다.


parent와 같이 GetChild(int index)를 사용하면 됩니다.

하지만 A의 부모는 무조건 하나겠지만 자식은 여러개일 수도 있기때문에 몇 번째 자식을 받아올 것인지 인덱스 번호를 넣어줘야합니다.

하이어라키상 맨 위의 자식부터 0번입니다.



이렇게 짜볼 수 있겠네요.




반응형