一、事件、函数、宏的定义
事件(Events) 是从游戏性代码中调用的节点,其使得蓝图执行一系列操作,蓝图本身会存在一些UE声明好的事件。通过对这些事件的实现,我们可以在对应事件发生的时候执行我们定义好的逻辑。
函数与宏整体功能类似,都是对一些功能算法进行了封装。
补充:自定义事件
除了系统声明好的事件,我们也可以自己在蓝图中声明并定义事件,即自定义事件。比如下面我们定义了一个屏幕打印字符串的事件。
然后在其他事件中可以调用我们的自定义事件,比如在【BeginPlay】
中调用【自定义事件】,那么在游戏开始的时候该蓝图类实例就会输出 Hello
。
【分析】可能你觉得自定义事件和自定义函数不是差不多嘛,那么它们到底有什么不同呢?
自定义事件可以看作是触发,函数与宏可以看作是调用。
触发的意思是在一个事件的执行流程中,我们触发了一个自定义事件,那么自定义事件并不会阻塞我们后续的执行流程,也就是说触发的自定义事件和触发的事件后面的执行流程是并行的。
而对于函数和宏,我们是调用,也就是说只有执行完函数和宏内部的执行流程才会执行调用函数和宏后面的执行流程。
二、事件、函数、宏的区别
区别一
自定义事件:可以有多个输入,无输出。
函数:可以有多个输入和输出。
宏:可以有多个输入和输出,但相较于函数,宏的输入和输出的类型可以是执行引脚,也就是说函数固定只有一个执行引脚,而宏可以有多个(也可以是0个)。
区别二
事件可以增加 Delay (其余待补充)节点。
函数不可以。
宏可以增加 Delay (其余待补充)节点。
区别三
事件没有局部变量,只能使用全局变量。
函数可以使用局部变量。
宏没有局部变量,只能使用全局变量。
区别四
事件和函数可以跨蓝图进行通信。
宏只能在本蓝图通信。
蓝图通信更多相关知识本文略。
三、蓝图函数库和蓝图宏库
一个蓝图函数库中可以定义若干个函数,这些函数都是全局函数,可以在任意蓝图中直接调用。
一个蓝图宏库中可以定义若干个宏,只能相同的类使用。