유니티/개발
유니티 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);
반응형