[CH3-09] Total Score 연동 안되는 문제 (또 기탁님의 도움..)

김여울·2025년 8월 19일
0

내일배움캠프

목록 보기
62/111

Total Score 연동 안되는 문제


⚠️ 문제

  • 게임 오버 시 GameOverWidget에 최종 점수를 제대로 표시하지 못하는 문제가 발생
  • 코드로 추가해도 안되고 블루프린트로 해도 안 됨...

🔍 원인

1. 게임 모드에서 점수 저장 문제

게임 오버 시점에서 점수가 APPPGameState에서 UPPPGameInstance로 제대로 전달되지 않음

2. 게임 오버 위젯에서 점수 표시 문제

GameOverWidget에서 GameInstance로부터 점수를 받지 못하고 있어 점수가 표시되지 않음

🚧 조치

기탁님께 연락을 했다... 고쳐주셨다...

1. 게임 모드에서 점수 전달

  • APPPGameMode::HandleGameOver() 에서 APPPGameState 에서 점수를 가져와 UPPPGameInstance의 FinalScore에 저장하도록 수정

    ➡ 점수를 GameOverWidget에 전달할 수 있도록 함

// 게임 모드에서 점수를 GameInstance에 저장
if (UPPPGameInstance* GI = GetGameInstance<UPPPGameInstance>())
{
    GI->FinalScore = FinalScore;  // FinalScore에 점수 저장

2. 게임 오버 위젯에서 점수 표시

  • UGameOverWidget::NativeConstruct()에서 GameInstance의 FinalScore를 가져와 ScoreText에 표시하도록 수정

  • SetFinalScore() 함수로 점수를 설정하고 ScoreText에 출력

// GameInstance에서 점수 가져와서 표시
if (UPPPGameInstance* GI = GetGameInstance<UPPPGameInstance>())
{
    int32 FinalScore = GI->FinalScore;
    if (ScoreText)
    {
        FString ScoreString = FString::Printf(TEXT("Total Score: %d"), FinalScore);
        ScoreText->SetText(FText::FromString(ScoreString));  // 점수 표시
    }
}

3. 점수 관리

  • APPPGameState에서 점수 관련 함수(AddScore, ResetScore, GetScore)를 추가하여 점수를 관리

    ➡ 이를 통해 점수 변경 시 UI 업데이트가 가능하도록 설정

void APPPGameState::AddScore(int32 Amount)
{
    Score += Amount;
    OnRep_Score();  // 점수 변경 시 UI 업데이트
}

void APPPGameState::ResetScore()
{
    Score = 0;
    OnRep_Score();  // 점수 초기화 시 UI 업데이트
}

int32 APPPGameState::GetScore() const
{
    return Score;  // 현재 점수 반환
}

💡 결과

  • GameMode에서 점수를 GameInstance로 저장

  • GameOverWidget에서 해당 점수를 표시

  • 게임 오버 시점에 정확한 점수가 화면에 나타남 !!


기탁님 감사합니다...ㅎㅎ..

0개의 댓글