Unity

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

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

 

 

 

 

 

 

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

 

 

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

 

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

 

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

 

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

 

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

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

 

반응형

 

 

 

두더지게임: 리마스터 무료 게임쿠폰

두더지게임: 리마스터 무료 게임쿠폰 "여러분 공짜 쿠폰입니두더지!!" 구글플레이스토어에서만 됩니두더지! 애플 앱스토어는 정책상 안됩니두더지! 10만골드 2024 20만골드 새해복 30만골드 가족 4

ssscool.tistory.com

 

 

[무료게임쿠폰] 두더지게임: 리그 오브 두더지

[무료게임쿠폰] 두더지게임: 리그 오브 두더지 구글플레이스토어 쿠폰사용 O, 앱스토어 쿠폰사용 X (앱스토어 정책상) 10만골드 가족 20만골드 건강 30만골드 자유 40만골드 행복하자 50만골드 아프

ssscool.tistory.com

 

 

[무료게임쿠폰] 방구키우기: 리그 오브 방구 타이밍 배틀

[무료게임쿠폰] 방구키우기: 리그 오브 방구 타이밍 배틀 구글플레이스토어 쿠폰사용 O, 앱스토어 쿠폰사용 X (앱스토어 정책상) 2022년 07월 29일 이후 업데이트버전 v.1.200.78 이후 버전으로 업데이

ssscool.tistory.com

 

 

[무료게임쿠폰] 뽑기 키우기: 리그 오브 뽑기

[무료게임쿠폰] 뽑기 키우기: 리그 오브 뽑기 다이아 100개 쿠폰 테슬라 다이아 200개 쿠폰 건강 다이아 300개 쿠폰 부자 다이아 400개 쿠폰 행복 다이아 600개 쿠폰 자유 다이아 700개 쿠폰 휴식 다이

ssscool.tistory.com

 

 

똥 피하기: 리그 오브 똥 - Google Play 앱

이 재미있는 가족 친화적인 게임에서 똥을 피하세요! 깨끗하게 유지하며 즐기세요!

play.google.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형