[내일배움캠프/UE] HUD

김세희·2025년 7월 8일

✍️Today I Learned

  1. HUD

HUD

Heads-up Display의 약자. 게임 내에서 미니 맵이나 체력 등이 표시되어있는 기본적인 UI
플레이어에게 정보를 제공하기 위한 화면이다.

예시) WoW HUD

내가 표시할 내용
1. 현재 레벨
2. 남은 시간
3. 현재 스코어

언리얼에서 제공하는 HUD 시스템

  • Canvas 기반 HUD
    HUD 클래스 상속. 예전 방식
  • UMG (Unreal Motion Graphics)
    Widget Blueprint로 제작

UI도 플레이어 컨트롤러에 배치해야 한다. 플레이어 컨트롤러가 입력을 받고 캐릭터를 조종하기 때문에


❗위젯 클래스 쓰려면 수정해야 하는 부분

프로젝트의 빌드 파일에 UMG 모듈을 추가해야한다.
PublicDependencyModuleNames: 프로젝트에서 필수적으로 사용하는 엔진 기능

// project.Build.cs
public class CH3_project : ModuleRules
{
	public CH3_project(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		PublicDependencyModuleNames.AddRange(new string[] { 
			"Core", 
			"CoreUObject", 
			"Engine", 
			"InputCore", 
			"EnhancedInput",
			"UMG"	// 위젯 블루프린트를 사용하기 위한 모듈이 들어 있음
		});

실시간 정보 연동

Widget Blueprint

  • Binding
    기본적으로 할 수 있는 바인딩 방식
    직관적이고 편리하나 Tick 함수 처럼 동작하기 때문에 UI 복잡할 경우 부하가 생길 수 있다.

C++

  • Set Text
    점수가 갱신될 때만 UI 업데이트

데이터 갱신-> Game State
HUD 위젯 인풋을 입력받고 관리, GameState에 위젯 넘겨주기 -> Player Controller


Widget 버튼 이벤트 활성화

해당 ui요소를 눌러 details 창에서 is Variable 을 체크하면 이벤트가 활성화 된다.
여기에서 UI 이벤트와 C++ 클래스의 함수를 바인딩한다.

❗새 레벨 로드시 주의할 점

새 레벨이 로드될 때마다 새로 생성/초기화 되는 클래스

  1. Game Mode
  2. Game State
  3. Player Controller
    레벨이 바뀔 때 새로 생성되어 새로운 아바타에 빙의된다.
  4. Pawn/Character
    플레이어가 빙의되는 월드 내 아바타. Game Mode에 의해 새로 스폰된다.
  5. Level Blueprint

레벨이 바뀌어도 유지되는 클래스

  1. Game Instance
    게임 종료될 때까지 단 하나만 존재한다. 레벨 이동과 관계없이 데이터를 유지해야 할 때 사용한다.
  2. Player State
    플레이어의 핵심 상태 정보를 담고 레벨을 이동해도 정보가 유지된다. 새로운 PlayerController에 정보가 복사되어 플레이어의 연속성을 보장한다.

3D Widget

위젯 컴포넌트
UI를 3D 월드에 배치할 수 있게 해주는 컴포넌트
2D UI를 3D 공간의 특정 개체 위에 붙여준다.

2D -> 3D 모드

  1. 스크린
    3D 상에 배치되지만 플레이어의 카메라와 상관없이 UI가 화면에 고정된 것처럼 보인다.
  2. 월드
    캐릭터의 움직임에 따라 UI도 같이 돌아간다.

출처: 스파르타코딩 내일배움캠프

0개의 댓글