C++使用UMG接口

C++使用UMG接口

 

 

1.独立建立一个UMG的模块

 

当你新建一个C++工程后,假如你的名称是MyTest,那么按照下面这个路径MyTest\Source\MyTest,找到MyTest.Build.cs文件并打开

,因为我本机的VS2013有点问题,所以直接从VS打开会崩溃。所以我就直接在这个文件中进行修改

 

 C++使用UMG接口_第1张图片

打开后,我们可以看到这是两行通过模块名称引用的代码,那么我们要使用UMG就必须要将他们修改成

 

 

2.扩展我们的游戏模式

 

我们要制作与UMG相关的内容必须要从User Widgets里面获取,所以我们要写一个函数来显示User Widgets,同时要在游戏运行的时候将其调用。我们同时需要跟踪这个User Widgets,这样可以确保我们不需要的时候可以直接去掉他。因为每一个工程都会自带一个自定义的GameMode,我们来简单的修改他

 

头文件中我们添加

virtual void BeginPlay() override;

 

/** 移出当前的菜单控件 同时创建一个新的控件 */

UFUNCTION(BlueprintCallable, Category = "UMG Game")

void ChangeMenuWidget(TSubclassOf<UUserWidget> NewWidgetClass);

protected:

/** 当游戏开始时我们创建这个控件 */

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UMG Game")

TSubclassOf<UUserWidget> StartingWidgetClass;

 

/** 记录我们使用的当前控件 */

UPROPERTY()

UUserWidget* CurrentWidget;

 

源文件中

void ACountDown::BeginPlay()

{

Super::BeginPlay();

//打开我们的UMG控件

ChangeMenuWidget(StartingWidgetClass);

}

 

//改变菜单控件

void ACountDown::ChangeMenuWidget(TSubclassOf<UUserWidgetNewWidgetClass)

{

//如果当前的控件为空

if (CurrentWidget != nullptr)

{

//将当前的控件从当前视口移出

CurrentWidget->RemoveFromViewport();

CurrentWidget = nullptr;

}

//新建一个控件

if (NewWidgetClass != nullptr)

{

//当前的控件=新创建的

CurrentWidget = CreateWidget<UUserWidget>(GetWorld(), NewWidgetClass);

//如果不是空

if (CurrentWidget != nullptr)

{

//添加进入视口

CurrentWidget->AddToViewport();

}

}

}

 

3.编译我们的程序,打开UE4编辑器,我们创建一个UMG蓝图

 C++使用UMG接口_第2张图片

打开后我们加入一个Button  和一个Text



你可能感兴趣的:(UE4,虚幻4,UMG)