Google Play에서 다운로드 App Store에서 다운로드

Unity

이벤트 체인 구성한 뒤 Log를 통해 이벤트에 리스너들이 등록이 된 걸 GetInvocationList 메서드로 확인한 후 실제 이벤트를 발생시켰는데 리스너가 하나도 없는 걸로 인식이 될 때

정보처리마법사 2024. 3. 24. 14:15
반응형

 

 

 

요괴소녀 키우기: 방치형 클리커 비주얼노벨 - Google Play 앱

방치형 클리커로 요괴 소녀를 성장시키세요! 비주얼 노벨 요소가 가미된 심플하고 가볍게 즐길 수 있는 캐주얼 게임

play.google.com

 

 

 

 

 

 

 

이벤트 체인 구성한 뒤 Log를 통해 이벤트에 리스너들이 등록이 된 걸 GetInvocationList 메서드로 확인한 후 실제 이벤트를 발생시켰는데 리스너가 하나도 없는 걸로 인식이 될 때

 

 

이건 뭔 이상한 버그인가 라고 생각이 들었는데 알고보니

 

계층구조 내에 두 군데 게임오브젝트에 동일한 해당 스크립트 컴포넌트가 부착되어 있었는데, 하나는 사용을 하지 않을 예정이어서 게임오브젝트를 비활성화를 해놨는데, 게임오브젝트가 비활성화 되어있음에도 불구하고, 두 스크립트가 모두 실행이 되어서 실제 사용하는 스크립트에서는 이벤트 초기화가 정상적으로 되었음에도 불구하고, 비활성화 되어있던 게임오브젝트에 있는 스크립트가 OnEnable 메서드가 호출이 되지 않아서 초기화가 되지 않은 상태에서 이 엉뚱한 이벤트가 트리거가 되면서 이벤트에 리스너가 하나도 없는 걸로 인식이 되었다.

 

조금 더 테스트를 해보니, 기존 싱글톤 패턴으로 사용했을 때에는 게임오브젝트가 비활성화 되어있으면 내부의 스크립트가 당연히(?) 실행이 되지 않아서 이런현상이 생기지 않았는데, DI 플러그인 Zenject 를 사용하면 이런현상이 발생한다.

 

결론은 Zenject 버그인걸로 판단이 된다.

 

선택은 둘 중 하나다. Zenject를 사용하지 않든지 아니면 이런 현상을 알고 사용하든지 Signal Bus를 사용하면 괜찮지 않을수도 있겠다는 생각은 들기도 하지만, 수정하기 전 기존 소스코드(이벤트쪽)는 여전히 문제가 생기니 확인이 필요하다.

일단 지금 당장은 사용하지 않는 스크립트는 모조리 삭제를 해야겠다.

 

반응형

 

 

요괴소녀 키우기: 방치형 클리커 비주얼노벨 - Google Play 앱

방치형 클리커로 요괴 소녀를 성장시키세요! 비주얼 노벨 요소가 가미된 심플하고 가볍게 즐길 수 있는 캐주얼 게임

play.google.com

 

 

반응형
Google Play에서 다운로드 App Store에서 다운로드