헤드업디스플레이의 구현

Unreal 이론|2024. 11. 14. 18:19

[이득우의 언리얼 프로그래밍 Part2 수업의 정리]

 

[플레이어의 HP와 스탯을 표시하는 헤드업 디스플레이 UI의 구현]\

 

헤드업 디스플레이의 생성 과정

  • 헤드업 디스플레이 (HUD)는 플레이어 컨트롤러에 의해 제작되고 관리되는 UI객체
  • HUD의 구현은 위젯을 생성하고 이를 플레이어 뷰포트에 띄우는 과정으로 생성된다.
  • 이렇게 만들어진 위젯은 자신을 소유한 플레이어 컨트롤러에 접근할 수 있다.

HUD는 모니터 화면 전체를 다 쓰기 때문에 Canvas Panel 사용

  • 클래스 추가-> UserWidget 선택-> 클래스 생성 후 WBP_ABHUD의 클래스 세팅으로 가 해당 클래스를 Parent Class로 설정해 생성한 클래스를 상속받도록 설정
  • ConstructorHelper를 사용해 생성자에서 WBP_ABHUD를 가져오고, BeginPlay에서 CreateWidget->AddtoViewport를 사용해 화면에 띄워준다.
  • 블루프린트에서 쓰던거랑 똑같은 구조인걸 알 수 있다.
#include "Player/ABPlayerController.h"
#include "UI/ABHUDWidget.h"

AABPlayerController::AABPlayerController()
{
	static ConstructorHelpers::FClassFinder<UABHUDWidget> ABHUDWidgetRef(TEXT("/Game/ArenaBattle/UI/WBP_ABHUD.WBP_ABHUD_C"));
	if (ABHUDWidgetRef.Class)
	{
		ABHUDWidgetClass = ABHUDWidgetRef.Class;
	}
}

void AABPlayerController::BeginPlay()
{
	Super::BeginPlay();

	FInputModeGameOnly GameOnlyInputMode;
	SetInputMode(GameOnlyInputMode);

	ABHUDWidget = CreateWidget<UABHUDWidget>(this, ABHUDWidgetClass);
	if (ABHUDWidget) {
		ABHUDWidget->AddToViewport();
	}
}

 

초기화 프로세스의 정리

  • 컴포넌트, 액터, UI 위젯의 초기화 과정
  • 컴포넌트는 BeginPlay전에 컴포넌트가 가장 먼저 초기화되어 데이터가 확정되는것이 중요
  • Initalize Component로 스텟에 관한 데이터 먼저 초기화
  • 액터는 그 후 PostInitialize Components 함수로 안전하게 확정된 데이터를 쓴다
  • BeginPlay 이후 PlayerController는 CreateWidget으로 UI 위젯 초기화
  • UI위젯은 이때 NativeOnInitialized 함수 호출, 위젯이 생성되는것이고 눈에 보이진 않음
  • 눈에 보이려면 AddtoViewport 호출되야함. 이때 UI위젯에서 NativeConstruct로 위젯 확정지음



'Unreal 이론' 카테고리의 다른 글

게임의 완성  (0) 2024.11.23
게임 플로우 다듬기  (1) 2024.11.21
인공지능 - 행동트리 모델의 구현  (0) 2024.11.11
인공지능 - 행동트리 모델의 이해  (2) 2024.11.10
게임데이터 관리  (0) 2024.11.06

댓글()