UE4 C++关联蓝图界面(仅显示)

发布时间 2023-10-15 22:47:16作者: LOFU

使用的自带第三人称c++模板,UE4.27

1.创建一个蓝图界面控件,设置好布局

2.找到项目代码xx(项目名称).build.cs文件

1)添加UMG及后续部分,使得可以调用蓝图模块相关内容

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "UMG",  "Slate","SlateCore" });
PrivateDependencyModuleNames.AddRange(new string[] {  });

3.找到项目代码中xx(项目名称)GameMode.h文件

1)添加头文件

#include "Blueprint/UserWidget.h"

2)类中添加虚函数BeginPlay,后续作为游戏运行即调用界面,CustomWidgetIns是自定义用户界面

class ATencent1GameMode : public AGameModeBase
{
    GENERATED_BODY()

public:
    ATencent1GameMode();

protected:
    virtual void BeginPlay() override;

private:
    UUserWidget* CustomWidgetIns;
};

4.找到项目代码中xx(项目名称)GameMode.cpp文件

1)初始化CustomWidgetIns = nullptr;

2)编写BeginPlay()函数

void ATencent1GameMode::BeginPlay()
{
    Super::BeginPlay();
    if (UClass* CustomWidgetClass = LoadClass<UUserWidget>(nullptr, TEXT("WidgetBlueprint'/Game/HUD.HUD_C'"))) {//loadclass就是关联到我们一开始创建的界面,注意右键复制界面的引用同时在地址最后加_C
        if (APlayerController* PC = GetWorld()->GetFirstPlayerController()) {//检查是否存在有效的玩家控制器并获取第一个
            CustomWidgetIns = CreateWidget(PC, CustomWidgetClass);
            if (CustomWidgetIns) {
                CustomWidgetIns->AddToViewport();//将界面添加到视口
            }
        }
    }
}

5.编译后可成功加载界面,比如左上角显示用户名