Hidden Victory UI에서 승리자 표시가 "WINNER"로 고정되어 있음

타이틀 화면에서 입력해서 GameInstance에 저장된 실제 플레이어 닉네임이 표시되지 않음
15번 춤췄을 때 히든 승리 조건 달성 시 닉네임이 "PLAYER"로만 표시됨

// ❌ Client RPC에서는 기본 매개변수 사용 불가
UFUNCTION(Client, Reliable)
void Client_ShowHiddenVictoryUI(TSubclassOf<UUserWidget> WidgetClass, const FString& WinnerNickname = TEXT(""));
// ✅ 기본값 없이 명시적으로 전달해야 함
UFUNCTION(Client, Reliable)
void Client_ShowHiddenVictoryUI(TSubclassOf<UUserWidget> WidgetClass, const FString& WinnerNickname);
// ✅ GetWidgetFromName으로 직접 Text Block 접근
if (UTextBlock* WinnerTextBlock = Cast<UTextBlock>(HiddenVictoryWidget->GetWidgetFromName(TEXT("WinnerNameText"))))
{
WinnerTextBlock->SetText(FText::FromString(WinnerNickname));
}
// ❌ 존재하지 않는 함수 호출
FString SavedNickname = GI->GetPlayerNickname();
// ✅ 기존 PostLogin에서 사용하는 함수와 동일하게
FString PlayerId = PS->GetUniqueId().IsValid() ? PS->GetUniqueId()->ToString() : PC->GetName();
FString SavedNickname = GI->GetPlayerNicknameById(PlayerId);

DCGameMode::DeclareHiddenWinner(): 승리자 닉네임 추출
DCGameMode::ShowHiddenVictoryUI(): 모든 클라이언트에게 전송
DCPlayerController::Client_ShowHiddenVictoryUI_Implementation(): 위젯 생성 및 텍스트 설정
// DCGameMode.cpp - 닉네임 가져오기
FString PlayerId = PS->GetUniqueId().IsValid() ? PS->GetUniqueId()->ToString() : PC->GetName();
FString WinnerNickname = GI->GetPlayerNicknameById(PlayerId);
// DCPlayerController.cpp - 위젯에 텍스트 설정
if (UTextBlock* WinnerTextBlock = Cast<UTextBlock>(HiddenVictoryWidget->GetWidgetFromName(TEXT("WinnerNameText"))))
{
WinnerTextBlock->SetText(FText::FromString(WinnerNickname));
}
Client RPC는 기본 매개변수 사용 불가
블루프린트 함수 호출보다 직접 위젯 접근이 안전함
컴파일 오류 시 에디터 완전 종료 후 빌드
기존 코드에서 사용하는 함수명과 일치시켜야 함
멀티플레이어 환경에서는 GameInstance 데이터 활용이 중요
결과적으로 "WINNER" → 실제 플레이어 닉네임으로 성공적으로 변경됨!
타이틀에서 입력한 닉네임이 히든 승리 시 정상적으로 표시됨!