본문 바로가기
Unreal/Manual

Unreal C++ Game Mode HUD 클래스 변경하기

by Dev_카페인 2023. 11. 19.
반응형

[Unreal/C++] Game Mode HUD 클래스 변경하기

게임 모드 베이스 클래스와 HUD 클래스를 만든다.

게임모드 베이스에서 HUD클래스를 참조하고 생성자에서 가져온다.

잘 가져왔는지 확인하고 HUD클래스를 변경한다.

 

C++ 클래스(게임모드, HUD)를 만든다.

 

블루프린트로 진행하는 경우 클래스를 상속받는 블루프린트 클래스를 만든다.

 

Edit -> Project Setting -> Map&Mode -> Default Game Mode 셋팅에서 변경한다.

 

블루프린트를 상속한 경우 게임모드가 잠기지 않아 편하게 바꿀 수 있다.

하지만 C++로 작성된 게임모드의 경우 선택된 게임모드를 변경할 수 없다.

blueprint로 상속하지 않고 C++만으로 설정한다면 하단 선택된 게임 모드를 직접 설정해줘야한다.

 

생성한 게임모드 클래스를 수정해준다.

 

//GameMode.h

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "MainProjectGameModeBase.generated.h"

UCLASS()
class MAINPROJECT_API AMainProjectGameModeBase : public AGameModeBase
{
	GENERATED_BODY()
	
public :
	AMainProjectGameModeBase();	// 생성자
};
//GameMode.cpp

#include "MainProjectGameModeBase.h"
#include "MainHUD.h"	// 생성한 HUD 클래스

AMainProjectGameModeBase::AMainProjectGameModeBase()
{
	// 생성자에서만 사용할 수 있는 ConstructorHelpers 기능을 활용한다.
    // blueprint 클래스를 가져오는 경우 맨 끝에 _C를 추가해 주는 것이 좋다.
	ConstructorHelpers::FClassFinder<AMainHUD> hud(L"Blueprint'/Game/Settings/BP_MainHUD.BP_MainHUD_C'");
	verifyf(hud.Succeeded(), L"asset.Succeeded()");	// 성공?

	HUDClass = hud.Class;
}

 

언리얼의 경우 에디터에 적용되는 것이 재빠르지 않다.

디폴트 값으로 지정되지 않는 경우 에디터를 재실행한다.

반응형