📁 UI 구조 분리
│
├─ 📍 MainMenu
│ ├─ 시네마틱 배경
│ ├─ Game Start / Quit
│
├─ 📍 PauseMenu
│ ├─ Resume / Back to Main
│
├─ 📍 GameOver
│ └─ 캐릭터 사망 시 → UI 띄움
│
├─ ⚙️ InGameHUD
│ ├─ 무기 이름 (`Pump Shotgun`)
│ ├─ 발사 방식 (`Single Fire`)
│ ├─ 무기 아이콘
│ ├─ 남은 탄약 (CurrentAmmo)
│ ├─ 전체 탄약 (MaxAmmo)
│ ├─ 탄창 개수
│ ├─ 수류탄 개수 (선택사항)
│ └─ → 무기 변경 / 탄약 변화 / 탄창 변화 시 UI 자동 반영
│
└─ 🧠 델리게이트
├─ ✅ `OnWeaponChanged(FWeaponData)`
├─ ✅ `OnAmmoChanged(int32 Current, int32 Max)`
├─ ✅ `OnMagazineChanged(int32 Count)`
├─ ✅ `OnGrenadeChanged(int32 Count)` (필요 시)
└─ ✅ `OnCharacterDead()`
| 기능 | 구현 방식 | 설명 |
|---|---|---|
| MainMenu UI | UI는 BP + 기능은 C++ | 영상은 MediaPlayer / 버튼 사운드, 효과는 BP / 레벨 이동은 C++ |
| PauseMenu UI | UI는 BP + 기능은 C++ | 버튼 사운드, 효과는 BP / 레벨 이동은 C++ |
| GameOver UI | UI는 BP / 델리게이트는 C++ | 캐릭터에서 사망 이벤트 발생 시 UI로 알림 |
| InGame HUD | UI는 BP + 기능은 C++ | 무기/탄약 상태 표시. 무기와 캐릭터에서 정보 받음 |
| 무기 정보 UI 반영 | C++ 델리게이트 + C++ 위젯 바인딩 | 무기 클래스에 OnWeaponChanged 델리게이트 선언 |
| 탄약 정보 UI 반영 | C++ 델리게이트 | 무기 or 캐릭터 클래스에서 OnAmmoChanged 델리게이트 호출 |
| 게임오버 처리 | C++ 캐릭터 → UI 델리게이트 호출 | 죽었을 때 위젯 생성해서 띄움 |
캐릭터가 무기를 교체 →
무기 클래스에서 델리게이트 발생 →
UI 위젯(C++)에서 델리게이트를 바인딩 →
무기 이름/아이콘 갱신