17.UE5丰富怪物、结构体、数据表、构造函数
2-19 丰富怪物,结构体、数据表格、构造函数_哔哩哔哩_bilibili
目录
1.结构体和数据表格
2.在构造函数中初始化怪物
3.实现怪物是否游荡
1.结构体和数据表格
创建蓝图:结构体蓝图
在结构体蓝图中添加变量,如下所示,为了实现不同怪物具有不同的生命值、攻击力,速度,皮肤,是否移动,攻击距离,攻击方式等。
我们首先实现怪物具有不同的生命值,攻击力和速度,皮肤。
首先创建数据表格
为不同的怪物添加不同的生命值,攻击力,速度。
注:行命名(是读取每一行数据的唯一表示),我们的行命名为,001怪物、002怪物、003怪物
下面为不同的怪物创建不同的皮肤,复制第一个怪物的材质实例,并进行修改和编辑
并在表格中,为不同怪物赋值不同的材质实例
至此,我们的表格体和数据表格制作好了,下一步是在怪物初始化时,读取数据表格的内容,初始化不同的怪物。
2.在构造函数中初始化怪物
怪物的初始化,实在构造函数中进行的,首先我们来编写父类的构造函数,即怪物总类的构造函数。
打开构造函数:
通过图表,获得数据表行,在Data Table中选择我们的新建 的数据表:怪物基础表格,并传入想要获取的数据行的名称:Row Name来读取一行数据,为了让怪物总类的子类自定义的读取想要的表格行,我们需要把Row Name提升为变量:怪物名字
随后总输出行中,获取我们想要的数据,并为我们的怪物总类变量进行分别赋值
为我们的怪物总类分别创建子类,因为我们之前已经创建了怪物001了,可以直接拷贝怪物001以实现怪物002和怪物003
在我们的子类蓝图中,让子类的构造函数调用父类构造函数并分别为怪物蓝图中的变量:怪物名字,分别赋值怪物001,怪物002,怪物003,记住一定要对应。
分别将怪物蓝图拖入到场景中,编译,运行,查看实现效果。
3.实现怪物是否游荡
在结构体中添加布尔类型的变量
让第一行的001怪物作为小怪进行true(游荡),让后面的两种怪物作为精英怪不移动false(不游荡)
在怪物总类的构造函数中读取数据表格,并为蓝图创建 新的变量:是否移动。并通过读取的表格数据对其进行赋值。
打开AI行为树的黑板,添加新的变量:是否移动,也是布尔值
并在怪物总类蓝图的开始事件中,为黑板的是否移动进行赋值
编译、运行实现效果