인프런 커뮤니티 질문&답변

ACACIA님의 프로필 이미지

작성한 질문수

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

InventoryUI가 특정 상황에서 ESC로 나가지지 않는 현상

해결된 질문

24.08.11 01:01 작성

·

143

0

수강생들이 혹시나 동일한 경험할까봐 남겨둡니다.


재현방법

  • 실행

  • Lobby에서 InventoryUI 오픈

  • InventoryUI에서 EquipmentUI 오픈

  • ESC 입력하여 EquipmentUI 닫기

     

  • ESC 입력

     

재현결과

  • InventoryUI 위에 게임을 종료하시겠습니까 ConfirmUI 오픈

기대결과

  • InventoryUI 닫기

     

재현버전(강의)

진행 이후 수정되었을 수도 있어서 적어만 둡니다.

  • 아이템 장착 Pt.4


사유

이전에 GoodsUI를 추가 하면서 OpenUI() 중 여는 ui의 siblingIndex를 childCount - 1로 수정하였습니다.

하지만 CloseUI() 할 때 그 다음 lastChild를 childCount -2로 조회하는 것으로 수정하지 않았습니다.

 

이 결과,

해당 재현 상황에서 UIManager의 CloseUI() 중 lastChild로 InventoryUI가 들어와야 하는데 GoodsUI로 들어오게 됩니다. GoodsUI는 BaseUI를 상속하지 않으므로 GetComponent<BaseUI> 후 설정되는 m_FrontUI가 null이 됩니다.

 

이후 ESC를 누르면 m_FrontUI가 null이므로 InventoryUI가 있음에도 게임 종료 ConfirmUI가 노출됩니다.

 

간이 해결

CloseUI시 frontUI에 GoodsUI가 아닌 그 다음 UI가 제대로 들어가게 하기.

UIManager.cs CloseUI() 수정하기

var lastChild = UICanvasTrs.GetChild(UICanvasTrs.childCount - 2);

답변 3

0

BurningCarrot님의 프로필 이미지
BurningCarrot
지식공유자

2024. 08. 12. 12:36

안녕하세요! BurningCarrot입니다.

내용 공유해 주셔서 감사합니다. 이번 주에 강의 보완 및 자료 재업로드 하도록 하겠습니다.

0

JOONBUM님의 프로필 이미지

2024. 08. 11. 22:37

오 그러네요!

도움이 많이 되었습니다. 감사합니다.

0

ACACIA님의 프로필 이미지
ACACIA
질문자

2024. 08. 11. 20:17

InGame 강의 부터는 FadeImg도 있기 때문에 -3가 필요합니다.

ACACIA님의 프로필 이미지

작성한 질문수

질문하기