오늘 한일

  • 과제5번 진행중(CoinGame)

UE5 HUD UI와 게임 데이터 연동


구현 내용

  • WBP_HUD 위젯을 생성하여 현재 레벨, 웨이브, 점수, 남은 시간을 화면에 표시
  • GameStateGameInstance의 데이터를 UMG 텍스트 바인딩으로 연결
  • 실시간으로 변경되는 게임 정보를 HUD에 자동 갱신되도록 구현

데이터 연동 구조

Get Game State
↓ Cast To OkGameState
↓ CurrentLevel / CurrentWave / RemainingTime 조회
↓ Text 반환


//GameMode/OkGameState.h
UPROPERTY(BlueprintReadOnly, Category = "GameStage")
int32 CurrentLevel = 1;
 
UPROPERTY(BlueprintReadOnly, Category = "GameStage")
int32 CurrentWave = 1;
 
UPROPERTY(BlueprintReadOnly, Category = "GameStage")
float RemainingTime = 30.0f;
 
//GameMode/OkGameInstance.h
// 💡 레벨(맵)이 전환되어도 파괴되지 않고 유지되어야 하는 데이터
UPROPERTY(BlueprintReadWrite, Category = "GameData")
int32 TotalScore = 0;

문제 및 해결

문제 : UI에 값이 계속 0으로 표시되고 갱신되지 않음

원인 : 바인딩 함수에서 Cast 이후 실행선(Execution Line)이 Return 노드까지 연결되지 않았음

해결 : 데이터 핀뿐만 아니라 실행 흐름선도 끝까지 연결하여 정상적으로 값이 반환되도록 수정

배운 점

  • 텍스트 바인딩은 데이터 변경을 UI에 쉽게 반영할 수 있지만, 실행 흐름이 올바르게 연결되어 있어야 정상 동작한다.
  • GameInstance를 활용하면 맵이 변경되어도 점수 같은 데이터를 유지할 수 있다.

TIL NBC