在HowTo_UMGGameMode.h中添加头文件:
#include "Blueprint/UserWidget.h"
接着添加入下定义:
public:
//在游戏开始时调用
virtual void BeginPlay() override;//
//移除当前菜单控件,如果可能,从指定类中创建新控件
UFUNCTION(BlueprintCallable, Category = "UMG Game")
void ChangeMenuWidget(TSubclassOf<UUserWidget> NewWidgetClass);//
protected:
//在游戏开始时作为菜单使用的控件类
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UMG Game")
TSubclassOf<UUserWidget> StaringWidgetClass;//
//用作为菜单的控件实例
UPROPERTY()
UUserWidget* CurrentWidget;//
};
在HowTo_UMGGameMode.cpp中添加:
void AHowTo_UMGGameMode::BeginPlay()
{
Super::BeginPlay();
ChangeMenuWidget(StartingWidgetClass);
}
void AHowTo_UMGGameMode::ChangeMenuWidget(TSubclassOf<UUserWidget> NewWidgetClass)
{
if (CurrentWidget != nullptr)
{
CurrentWidget->RemoveFromViewport();
CurrentWidget = nullptr;
}
if (NewWidgetClass != nullptr)
{
CurrentWidget = CreateWidget<UUserWidget>(GetWorld(), NewWidgetClass);
if (CurrentWidget != nullptr)
{
CurrentWidget->AddToViewport();
}
}
}
接下来,回到编辑器,编辑菜单资源