TIL

[7/3] 여러 판넬들 대신 하나의 판넬이 모든 역할을 하도록 리팩토링

youngjin02 2025. 7. 4. 04:05

🎮 오늘 한 일

  • MessagePopup 통합
    • CheckPanel / YesNoPanel → MessagePopup 하나로 리팩토링
    • YES/NO 버튼 자동 토글, Action onYes / onNo 콜백으로 재사용성 확보
  • SelectAdventureUIController 개편
    • 모든 경고·확인 창을 messagePopup.Open() 한 줄로 처리
    • 스태미나/쥬얼 소모 로직을 UserDataManager API (UseStamina / UseJewel) 로 이관
  • UserDataManager 싱글톤 작성
    • Use / Add 계열 메서드 → 값 갱신 후 PublicUIController.Refresh() 자동 호출
    • 실수 방지를 위해 리소스 부족 시 false 반환하도록 설계
  • HUD 모드 추가
    • HudMode.Character 등 새 모드 반영, UIManager OnSceneLoaded()에서 모드 스위칭
  • 팝업 프리팹 정리
    • Scene마다 중복 배치 없이 PublicCanvas 하위에 단일 팝업만 유지

🧠 배운 점 / 느낀 점

  • “하나의 스크립트 + 다른 프리팹” 패턴
    • 스크립트는 기능만, 시각/레이아웃은 프리팹이 맡게 하니 유지보수 부담 줄어듬
  • Action 콜백 깔끔하게 쓰는 법
    • onYes = null 기본값 덕분에 필요할 때만 함수를 넘기면 되고,
      ?.Invoke() 로 NPE 걱정도 끝.
  • UI/Logic 분리
    • “버튼 → Manager API 호출 → Manager 가 UI 갱신” 흐름이 확립.
      덕분에 새 팝업이나 새 씬을 붙여도 로직 재사용이 편해졌다.