게임 개발 공부/Unreal Engine

HUD

Vetenir 2025. 2. 7. 21:11

HUD (Heads-Up Display)

  • 플레이어에게 정보를 제공하기 위한 화면.
  • 현재 게임 상황을 이해하는 데 필요한 체력, 미니맵 같은 정보를 제공.

 

언리얼 엔진의 HUD

  1. Canvas 기반 HUD:
    • AHUD 클래스를 상속하여 구현
    • 기본적인 2D 그리기 작업(텍스트, 이미지 등) 가능
    • 레거시 방식으로 간주되며, 간단한 HUD에 적합
  2. UMG (Unreal Motion Graphics):
    • 언리얼 엔진의 Widget Blueprint를 이용한 UI 시스템
    • 더 직관적이고 강력한 HUD 디자인 가능
    • 다양한 위젯(Text, Button, Image 등)을 사용하여 HUD를 제작

 

Widget Blueprint

언리얼 엔진에서 UI를 설계할 수 있도록 제공 되는 에디터용 블루 프린트입니다.

 

Widget Blueprint 생성

우클릭 -> User Interface -> Widget Blueprint

 

화면 우측 상단의 Designer 버튼을 눌러 여러 요소를 배치할 수 있습니다.

 

화면 크기 설정

화면에 배치되는 UI 들을 화면의 크기에 맞게 보일 수 있게 아래의 설정을 해줍니다.

생성한 Widget Blueprint에서 Screen size -> Monitors -> 21.5-24" monitor
뷰포트 상단의 점 3개 버튼 -> Advanced Settings...
Widget Blueprint의 크기와 맞춰줍니다.

 

CPP 작성시 주의 사항

코드에 'CreateWidget'을 사용해서 작동하려면 UMG 모듈이 빌드 설정에 추가되어 있어야 합니다.

해당 모듈을 넣어주지 않으면 빌드가 오류가 생깁니다.

using UnrealBuildTool;

public class Cpp_Project : ModuleRules
{
	public Cpp_Project(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		PublicDependencyModuleNames.AddRange(new string[] { 
			"Core", 
			"CoreUObject", 
			"Engine", 
			"InputCore", 
			"EnhancedInput",
            		"UMG" // UMG 추가
		});

		PrivateDependencyModuleNames.AddRange(new string[] {  });

		// Uncomment if you are using Slate UI
		// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
		
		// Uncomment if you are using online features
		// PrivateDependencyModuleNames.Add("OnlineSubsystem");

		// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
	}
}

 

 

 

 

 

 

 

출처

https://teamsparta.notion.site/17-UI-7c64183faca04620b4c08373f4e57956