게임 개발 중 프로젝트 내 오브젝트를 동적 생성 방식으로 바꾼 후 부터 디버깅에 애를 먹고 있다.
크고 작은 어려움이 있는데 지금 걸려있는 부분은 다음과 같다.
프리팹을 동적으로 가져와 인스턴스를 만들 때 오브젝트에 붙어있는 스크립트 등의 설정을 하려면 EventDelegate를 필연적으로 사용해야 한다.
(다른 방법이 있는지는 아직 잘 모르겠다.)
버튼을 눌러 UI를 변경하고 싶을 때 현재 있는 오브젝트를 전부 파괴하고 UI오브젝트를 다시 동적으로 만드는 방식인데,
중단점을 여기저기 걸어서 디버깅을 해본 결과 버튼을 클릭하면 그것을 인식하는 리스너 역할을 하는 함수 이름을 OnButtonClick이라고 할 경우 EventDelegate가 끝나고 오브젝트가 생성되는 타이밍은 OnButtonClick이 끝난 후이다.
이때, OnButtonClick이 끝난 후 생성된 특정 버튼의 Label을 바꾸고 싶은데 버튼 오브젝트마다 리스너를 하나씩 더 붙여야 하나 고민중이다.
그 많은 오브젝트에 하나하나 다 붙이기도 좀 뭐하고..
Update()를 만들어서 프레임마다 감지하기도 괜히 찝찝하다. 쓸데없는 낭비가 될 것 같다.
분명 좀더 괜찮은 방법이 있지 싶은데 검색을 하고 싶어도 키워드를 모르겠다.
뭐 요는 오브젝트가 생성되는 타이밍을 캐치해서 그 이후에 Label을 바꾸거나,
아예 오브젝트 생성코드에서 Label을 변경해두거나 둘중 하나를 실현하면 되는 것이다.
======================================================================
오브젝트 생성 자체는 EventDelegate를 거치지 않는다는 사실을 깨닫고 오브젝트 생성 함수에서 Label을 변경하였다.
FindChild("자식 오브젝트 이름")을 두세번 적용하여 찾아갈 수 있었다.
알고 보면 아무것도 아닌데 삽질만 잔뜩 한 기분이다..
어쨌든 디버깅 끝.
'Unity | C#' 카테고리의 다른 글
[Unity ARCore] 유니티 ARCore 디버깅툴을 사용하며 - instant preview (0) | 2019.02.10 |
---|