实现蓝图类之间的交互
-
添加输入控制中的操作映射:Fire
-
但是注意:
Actor无法接受输入事件 -
自定义事件的添加:自定义事件可以让功能分成块,可以在蓝图内部直接调用,也可以实现跨蓝图调用,还可以通过触发事件的方式调用
-
在枪蓝图中添加一个自定义事件
-
在玩家蓝图中定义一个枪蓝图类型的变量,当玩家碰撞到枪后,玩家蓝图持有枪蓝图
-
当执行
Fire事件时,执行枪蓝图中的自定义事件
实现
打开编辑器,在 编辑 > 项目设置 > 输入

在 操作映射 中添加 鼠标左键 的操作映射

进入 Player_BP 玩家蓝图中,创建 Fire 和 打印输出 节点,测试是否映射成功

编译后运行

正常输出
进入 Gun_BP 枪支蓝图,添加 自定义事件

连接到一个 打印输出 节点以确认是否正确执行

进入 Player_BP 玩家蓝图,创建一个变量以存储 Gun_BP 枪支的对象,并将变量类型改为 Gun_GP 的对象引用

回到 Gun_BP 节点,从 类型转换为Player_BP 节点的 As Player BP 输出处拖线到空白处,添加 设置Gun 节点

右键空白处添加 self 节点

将 self 输出连接到 设置Gun 节点的 Gun 上,并将其他线连接

回到 Player_BP 节点,在空白处添加 Gun 变量到空白处,并从输出处拖线到空白处添加 shoot ,将其余线连接

编译后运行

但是如果在没拿到枪之前,按下鼠标左键会获得报错

因为没有拿到枪支之前,无法找到枪支的对象,需要在 Player_BP 中的调用节点之前设置判断

从 Gun 处添加不等于判定并连接到分支,判断是否为空,为空则不执行
本章节涉及到了 面向对象 思维和 封装,需要一定的编程基础