UE5 - 蓝图类的继承与转换详解2(事件继承、事件重写)
作者:hangge | 2025-08-22 08:31
蓝图中的事件与 C++ 中的函数是一种内容,蓝图中的事件可以代替大部分函数。与函数相同,事件也可以被继承和重写。并且事件和函数可以相互转换。本文将通过样例演示事件的继承与重写。
二、事件的继承与重写
1,事件继承
(1)首先我们创建一个父类蓝图“BP_Fruit”和两个子类蓝图“BP_Apple”、“BP_Banana”。具体可以参考前文:
(2)打开“BP_Fruit”蓝图,在“事件图表”面板的空白位置单击鼠标右键并输入“自定义事件”,创建一个“自定义事件”节点,并命名为“TestEvent”

(3)将“TestEvent”事件连接函数“Spawn Particle”,并且由于有了事件的参与,就可以在执行函数时使用异步节点“延迟”。新建“延迟”节点并用其连接“打印字符串”节点,新建“Self”节点和“获取显示命名”节点,连接“Return Value”引脚与“In String” 引脚。

(4)在“事件开始运行”节点后调用“TestEvent”节点。

(5)编译并保存后回到关卡中,进入 SIE 运行模式,可以看到左上角输出了蓝图的名称,同时“BP_Apple”蓝图也播放了火焰粒子特效,这说明每个子类都执行了事件。

2,事件重写
(1)在“BP_Fruit”蓝图中创建的自定义事件“TestEvent”可以在子类中被重新写入。打开“BP_Apple”蓝图,在“事件图表”面板中新建“事件 Test Event”节点。

(2)由于“事件开始运行”节点本身就作为事件被继承了,当父类使用“事件开始运行”节点调用自已创建的“TestEvent”事件时,子类也会被调用“事件开始运行”节点与自己继承的“TestEvent”事件。因此在开始运行后,子类中新建的“事件 TestEvent”事件也会产生执行流,但此时没有调用父类的函数,所以此事件将不会执行父类事件的内容。使用鼠标右键单击此事件,执行“将调用添加到父项函数”菜单命令后,子类也会执行父类事件的内容。

(3)在“父类:TestEvent”节点后连接“打印字符串”节点,设置“In String”为“我是 Apple 中的事件重写内容”

(4)编译并保存后进入 SIE 运行模式,可以看到左上角会输出“我是 Apple 中的事件重写内容”。如果要让指定的子类不执行父类事件的内容,只执行自己重写的内容,可以删除“父类:Test Event”节点。

全部评论(0)