Unreal5 공부/TIL

2026/04/28 TIL

anna59 2026. 4. 28. 23:54

 

오늘의 목표

  • 언리얼 강의 3-5,  4-1, 4-2, 4-3, 4-4 수강 (4-2까지 수강 완료)

 

강의 요약

새로 배운 개념 정리

 

게임 루프 설계를 통한 게임 흐름 제어하기

 

이제까지 작성한 SpartaProject 코드 바탕

OpenLevel ->새 GameState가 만들어짐.

단, 각 레벨에 내 GameState를 만들게 되므로 최종 스코어나 현재 맵 인덱스 등등이 GameState와 함께 초기화되는 구조. 

-> GameInstance에 저장함으로서 해결.

 

GameInstance: 게임 전체에서 유지되는 싱글톤객체 (게임 전체에서 통괄하는 데이터 저장)

 

UI 위젯 설계와 실시간 데이터 연동하기

 

HUD(Heads_Up Display)

게임 상 데이터들을 플레이어들에게 띄워줌.

구현 방법

- (옛날 방식) 캔버스 기반 HUD 

HUD 클래스를 상속받아 만드는 방식

- (현재 방식) UMG / Unreal Motion Graphic

 

자주 사용하는 UI 요소

TextBlock, Button, ProgressBar etc....

CanvasPanel: 기본적인 레이아웃 패널 (루트같은 거)

 

UI를 PlayerController에 배치한다.

다른 곳에 배치해도 사용 가능하지만 입력을 받고 처리하는 PlayerController에 있는 편이 편리! (해당 예제의 경우)

 

CreateWidget(this, HUDWidgetClass) 

parameter: 생성위치, 생성할 객체 클래스

를 통해 Widget을 생성한다.

 

생성한 UI를 빌드하기 위해서는 

프로젝트 필수 엔진 기능(Core, CoreUObject, Engine, InputCore, EnhancedInput)이 있는 곳에

Build.CS파일에 "UMG"를 추가해줘야한다.

 

UI-데이터 연동 방법

1. 데이터 바인딩

블루프린트를 통해 데이터 바인딩. 간단하게 구현할 수 있음

단점: Tick함수처럼 매 프레임 작동하는 형식. 무거워질 수 있음

 

2. Set Text 방식

c++ 방식 구현. 데이터 변화가 있을 때만 값을 바꿔줄 수 있어 효율적이다.

- 방법

1. PlayerController에서 GameState로 HUD를 보낸다. (데이터가 GameState에 있음)

UpdateHUD() 함수를 만들어, 적재적소에 호출하도록 만든다.

어떤 시점에 호출을 하느냐?

->GameOver시, HUD를 처음 띄웠을 때, Level을 처음 시작할 때 등등. 업데이트가 필요한 곳에 호출하도록 한다.

그러나 30초 타이머를 사용하는 이번 예제 특성상 타이머에 맞춰 0.1초마다 갱신해줘야한다.

 

게임 흐름에 맞춘 메뉴 UI 구현하기

게임 시작 화면을 띄우는 UI를 만들기 위해 MainMenu를 만들어 준다.

메뉴 전용 맵이 있으면 구조가 명확해짐.