首先我们新建一个文件夹导入素材。这次我们要使用的素材是第一、第二和第四个。分别是气泡、血量球和技能框。

geem2教程_geem2教程

先新建一个技能框的UI。在编辑模式中拖入技能框的图片。

geem2教程_游戏_02

 并按照以下参数进行设置。SIZE的大小就是图片的大小。它是最底层的涂层,ZORDER设置为1。

geem2教程_c++_03

创建一个新材质,准备制作血量球。

按照如下方式进行设置和连接。

geem2教程_ide_04

新建一个血量球的UI。

按照如下设置。

geem2教程_游戏_05

 

Mat做好之后,为了方便编辑,创建一个该MAT的Instance。

geem2教程_ide_06

 

打开血量球的蓝图编辑。按照以下方式连接。将Glass Ball这个变量(图片)设置为刚才新建的Mat_Instance。

然后新建一个事件Percentage(有一个float类型的参数输入)用于更改血球的血量显示。从GlassBall的UI中得到MAT,更改MAT中的Scalar类型参数的值,通过Scalar类型的参数名来确定具体的哪个模块。

 

geem2教程_UI_07

 在MAT中这个Percentage就是ScalarParameter类型。设置它的值就可以改变血量球的显示,这个数据的变化自然得根据角色剩余血量的比例来。

geem2教程_ide_08

 打开技能框的UI,按照下图载入血球的UI,调整好血量球的位置即可。

geem2教程_ide_09

打开主角的蓝图,进行编辑。创建技能框UI,并显示。

geem2教程_ide_10

在之前的Overlap事件的最后添加如下连接。

geem2教程_c++_11

当主角承担伤害后就激活Percentage事件,并传入血量比,以调整血量球的显示。

运行成功,效果如下:

geem2教程_ide_12

geem2教程_UI_13

这里需要在代码里修改一下一个小问题:

geem2教程_c++_14

给MaxHealth结构体增加了一个宏定义,可以让其在主角的蓝图中被访问到。

为了当AI死亡时候,更加安全地释放控制权限。

在敌人的控制器文件中增加了一下代码:

头文件:

virtual void OnUnPossess() override;

CPP文件:

void AEnemyController::OnUnPossess()
{
	Super::OnUnPossess();
	AIBehaviorTree->StopTree(EBTStopMode::Safe);
}

这种方式代替了之前的GetBrainComponent()->StopLogic()的方法,虽然StopTree的底层也是这样实现的,但是直接使用StopTree来释放控制能够避免很多麻烦,至少,线程是安全的。