首先我们新建一个文件夹导入素材。这次我们要使用的素材是第一、第二和第四个。分别是气泡、血量球和技能框。
先新建一个技能框的UI。在编辑模式中拖入技能框的图片。
并按照以下参数进行设置。SIZE的大小就是图片的大小。它是最底层的涂层,ZORDER设置为1。
创建一个新材质,准备制作血量球。
按照如下方式进行设置和连接。
新建一个血量球的UI。
按照如下设置。
Mat做好之后,为了方便编辑,创建一个该MAT的Instance。
打开血量球的蓝图编辑。按照以下方式连接。将Glass Ball这个变量(图片)设置为刚才新建的Mat_Instance。
然后新建一个事件Percentage(有一个float类型的参数输入)用于更改血球的血量显示。从GlassBall的UI中得到MAT,更改MAT中的Scalar类型参数的值,通过Scalar类型的参数名来确定具体的哪个模块。
在MAT中这个Percentage就是ScalarParameter类型。设置它的值就可以改变血量球的显示,这个数据的变化自然得根据角色剩余血量的比例来。
打开技能框的UI,按照下图载入血球的UI,调整好血量球的位置即可。
打开主角的蓝图,进行编辑。创建技能框UI,并显示。
在之前的Overlap事件的最后添加如下连接。
当主角承担伤害后就激活Percentage事件,并传入血量比,以调整血量球的显示。
运行成功,效果如下:
这里需要在代码里修改一下一个小问题:
给MaxHealth结构体增加了一个宏定义,可以让其在主角的蓝图中被访问到。
为了当AI死亡时候,更加安全地释放控制权限。
在敌人的控制器文件中增加了一下代码:
头文件:
virtual void OnUnPossess() override;
CPP文件:
void AEnemyController::OnUnPossess()
{
Super::OnUnPossess();
AIBehaviorTree->StopTree(EBTStopMode::Safe);
}
这种方式代替了之前的GetBrainComponent()->StopLogic()的方法,虽然StopTree的底层也是这样实现的,但是直接使用StopTree来释放控制能够避免很多麻烦,至少,线程是安全的。
文中所涉及的资源下载地址为:https://download.csdn.net/download/weixin_43654485/12753102
欢迎大家加入Unreal Engine C++ & Blueprint群一起交流:1143575617