안 쓰던 블로그

유니티 SetActive(false) 되어있는 오브젝트 찾기 본문

유니티/개발

유니티 SetActive(false) 되어있는 오브젝트 찾기

proqk 2020. 10. 4. 12:50
반응형

씬 구성은 이렇고, 뒤에 통장을 누르면 1) 회색 화면을 깔고 2) 그 위에 처리, 거절 버튼이 위에 올라왔으면 좋겠다

처음부터 회색 화면과 처리, 거절이 보이면 안 되니까 void start()에다가 SetActive(false)를 넣어서 시작 하자마자 비활성화를 했다

GameObject.Find("gray").SetActive(false);
GameObject.Find("처리").SetActive(false);
GameObject.Find("거절").SetActive(false);

 

 

근데 이러면 문제가, 통장을 눌렀을 때 회색, 처리, 거절 오브젝트를 find하고 SetActive(true);를 해야 하는데 false인 오브젝트는 find가 안 된다

해결 방법은 활성화된 부모를 찾아서 비활성화된 자식을 찾으면 된다

 

gray오브젝트는 image, 처리와 거절은 button으로 셋 다 UI로써 부모를 Canvas로 두고 있다

Canvas는 활성화되어 있으니까 Canvas를 find하고 findchild로 비활성화된 자식들을 찾으면 된다

 

GameObject.Find("Canvas").transform.FindChild("gray").gameObject.SetActive(true);
GameObject.Find("Canvas").transform.FindChild("처리").gameObject.SetActive(true);
GameObject.Find("Canvas").transform.FindChild("거절").gameObject.SetActive(true);

 

부모가 Canvas가 아니더라도 활성화된 부모면 뭐든 상관없다

 

GameObject.Find("활성화된 부모 오브젝트").transform.FindChild("비활성화된 자식 오브젝트").gameObject.SetActive(true);

 

반응형
Comments