<aside> 📌

<aside> 💡 목차

</aside>

<aside>

1. UMG (User Widget) 위젯 기초 디자인 이해하기


1️⃣ HUD (Heads-Up Dispaly)란?

2️⃣ **위젯 블루프린트 (**Widget Blueprint)란?

3️⃣ UI 요소 (UI Elements)란?

4️⃣ 점수, 시간, 레벨 표시를 위한 UI Widget 디자인하기

<aside>

2. HUD Widget을 생성해 화면에 표시하기


1️⃣ PlayerController에서 HUD 생성 로직 추가하기

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "SpartaPlayerController.generated.h"

class UInputMappingContext;
class UInputAction;

UCLASS()
class SPARTAPROJECT_API ASpartaPlayerController : public APlayerController
{
    GENERATED_BODY()

public:
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
    UInputMappingContext* SpartaInputMappingContext;
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
    UInputAction* SpartaMoveAction;
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
    UInputAction* SpartaJumpAction;
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
    UInputAction* SpartaLookAction;
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
    UInputAction* SpartaSprintAction;
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
    UInputAction* SpartaPickUpAction;

    // UMG 위젯 클래스를 에디터에서 할당받을 변수
    **UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "UI")
    TSubclassOf<UUserWidget> HUDWidgetClass;**

protected:
    virtual void BeginPlay() override;
};
#include "SpartaPlayerController.h"
#include "EnhancedInputSubsystems.h"
#include "EnhancedInputComponent.h"
**#include "Blueprint/UserWidget.h"** // 헤더 추가

ASpartaPlayerController::ASpartaPlayerController()
	: InputMappingContext(nullptr),
	  MoveAction(nullptr),
	  JumpAction(nullptr),
	  LookAction(nullptr),
	  SprintAction(nullptr)
{
}

void ASpartaPlayerController::BeginPlay()
{
		Super::BeginPlay();
	
		if (ULocalPlayer* LocalPlayer = GetLocalPlayer())
		{
			if (UEnhancedInputLocalPlayerSubsystem* Subsystem =
				LocalPlayer->GetSubsystem<UEnhancedInputLocalPlayerSubsystem>())
			{
				if (InputMappingContext)
				{
					Subsystem->AddMappingContext(InputMappingContext, 0);
				}
			}
		}

    // HUD 위젯 생성 및 표시
    **if (HUDWidgetClass)
    {
        UUserWidget* HUDWidget = CreateWidget<UUserWidget>(this, HUDWidgetClass);
        if (HUDWidget)
        {
            HUDWidget->AddToViewport();
        }
    }**
}

using UnrealBuildTool;

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

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

2️⃣ HUD Widget 테스트하기

<aside>

</aside>

<aside>

</aside>


Copyright ⓒ TeamSparta All rights reserved.