TIL

Pause / GameOver UI 기능 안정화 및 반복 사용 대응 개선

youngjin02 2025. 5. 29. 23:18

🎮 오늘 한 일

1. Pause UI 개선

  • Pause → Resume → Pause 루프에서 두 번째 Pause 시 UI가 뜨지 않던 버그 수정
  • UIManager.Open<PauseUI>() 호출 시 Open() 함수에서 버튼 패널 상태를 초기화하도록 수정
  • PauseUI.Open() 오버라이드하여 buttonPanel, resumePanel, countdownText 상태 초기화 추가

2. Resume 버튼 이벤트 방식 통일

  • OnClick()을 코드에서 할당하도록 변경하여 Prefab 내 미리 연결해둔 함수 제거
  • Awake()에서 resumeButton.onClick.AddListener(OnClickResume) 명시적으로 할당

3. GameOver UI 버튼 기능 수정

  • GameOverUI.cs에서 홈 / 리트라이 버튼을 직접 AddListener()로 연결
  • Inspector 상에서 None (Button)으로 유지되도록 하고, 런타임에 동적으로 연결

4. ButtonPanel / ResumePanel 누락 문제 해결

  • 프리팹에서 해당 필드가 할당되지 않아 null 참조 발생
  • Inspector에서 PauseUI의 buttonPanel, resumePanel 필드를 올바르게 연결하여 해결

🧠 배운 점

  • Unity에서 Button의 OnClick 이벤트는 코드로도 확실히 관리 가능하므로, 프리팹 간 충돌을 줄이려면 이 방식을 고려할 수 있음
  • UIBase.Open()을 오버라이드할 때 초기 상태 세팅은 매우 중요하며, 다음에 다시 열릴 때 문제를 방지해줌
  • Prefab의 필드 누락은 런타임 NullReferenceException으로 이어지므로 반드시 Inspector 확인이 필요