단서 획득 시 데이터(
Bool Array)의 상태를 먼저 갱신하고, 이후 UI 위젯(HUD, Journal)에 변경 사항을 브로드캐스트하는 구조입니다. 틱(Tick)이 아닌 이벤트 기반으로 UI를 업데이트하여 성능을 최적화했으며, 조건문을 통해 중복 해금을 방지하여 데이터 무결성을 유지했습니다.
//Police.cpp
void APolice::UnlockMemoWrap(int32 MemoIndex)
{
if (MemoIndex < 1 || MemoIndex > 6) return;
//1. 데이터 상태 업데이트(중복 해금 방지)
if (bMemoUnlocked[MemoIndex - 1]) return;
bMemoUnlocked[MemoIndex - 1] = true;
//2. HUD(Update Mark) 업데이트-알림(Notification) 처리
if (PoliceMemoOffWidget)
{
if (UPoliceMemoOffWidget* OffWidget = Cast<UPoliceMemoOffWidget>(PoliceMemoOffWidget))
{
OffWidget->SetUpdateMarkVisible(true); // 초록 점 표시 ON
}
}
//3. 실제 수첩 UI 내부 내용 해금 (Data Binding)
if (PoliceMemoOnWidget)
{
PoliceMemoOnWidget->UnlockMemo(MemoIndex);
}
}