0. 개요

프로젝트 기본 에셋으로 주어진 구형(Globe) 체력 머티리얼을 사용해 부모 위젯 블루프린트를 만든 후 체력과 마나 글로브가 해당 부모 위젯 블루프린트를 상속받아, 이미지, 패딩, 백그라운드 이미지를 오버라이드하여 바꿀 수 있게 되었다(포스트 생략).

이제 해당 위젯들을 화면 상에 띄우고 GAS의 속성 세트 값을 반영하도록 설정한다.

 

1. HUD

(1) 코드

HUD를 상속받는 C++ 클래스를 생성한다.

#include "CoreMinimal.h"
#include "GameFramework/HUD.h"
#include "AuraHUD.generated.h"

class UAuraUserWidget;

UCLASS()
class AURA_API AAuraHUD : public AHUD
{
	GENERATED_BODY()

protected:
	virtual void BeginPlay() override;
	
public:
	UPROPERTY()
	TObjectPtr<UAuraUserWidget> OverlayWidget;

private:
	UPROPERTY(EditAnywhere)
	TSubclassOf<UAuraUserWidget> OverlayWidgetClass;
};

오버레이 위젯을 화면 상에 띄울 예정이므로 오버레이 위젯과 블루프린트에서 할당할 오버레이 위젯 클래스를 설정한다.

 

#include "UI/HUD/AuraHUD.h"
#include "UI/Widget/AuraUserWidget.h"

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

    UUserWidget* Widget = CreateWidget<UUserWidget>(GetWorld(), OverlayWidgetClass);
    Widget->AddToViewport();
}

CreateWidget 템플릿 함수를 사용하여 위젯을 만들고 뷰포트에 추가한다.

 

 

(2) HUD 블루프린트 생성

AuraHUD를 상속받는 블루 프린트 BP_AuraHUD를 생성하고 이전에 TSubClassOf로 지정했던 Overlay Widget Class를 이전에 생성했던 오버레이 블루프린트로 지정한다.

 

(3) 게임모드에서 적용

이전에 생성했던 BP_AuraGameMode 내의 기본 설정에서 HUD를 BP_AuraHUD로 지정한다.

 

이제 게임을 실행하면 HUD가 정상적으로 나타나는 것을 볼 수 있다.