UE4蓝图之函数、事件、宏的区别

语法区别

执行引脚的区别:

  • 函数允许有一个执行引脚和一个输出引脚
  • 事件只允许有一个执行引脚
  • 宏允许有多个执行引脚和读个输出引脚

返回值

函数和宏允许有返回值,而事件没有返回值

需要注意的是:
函数可以有返回值也可以没有,如果我们不给函数设置任何返回值时,我们调用函数的地方会出现事件的标识(箭头)而不是函数的标识(f),如下图所示

无返回值的函数系统会当作一个事件来进行的。同样的,子类重载父类的无返回值函数后,也会当作事件来进行的。这可以说是UE4的BUG,也可以理解为特性处理,具体为何有待更深一个的研究。

延迟节点

事件和宏中可以使用UE4提供的延迟节点,函数不可以。
有部分节点是某个功能特有的,不止延迟节点,TimeLine节点只可以在事件中使用也是一个例子。

访问范围

  • 函数和事件可以跨蓝图类访问,而宏只可以作为在定义的蓝图类内访问
  • 函数可以被继承,而宏不可以被继承,子类无法使用父类的宏
  • 宏库可以跨蓝图类访问

逻辑区别

函数和宏的调用是同步执行,需要等待函数或宏内部逻辑执行完毕才进行接下来的逻辑
事件是异步执行,触发事件的地方无需关心事件内部的逻辑,只需要触发事件即可执行接下来的逻辑。

原因:因为函数或宏有返回值,调用函数或宏的后续逻辑可能与返回值有关联,所以需要等待它们调用结束方可继续接下来的逻辑;而事件无返回值,事件内部的逻辑与调用地方的逻辑没有任何关联,所以无需等待事件执行完毕即可执行接下来的逻辑,只需要在调用事件的时候发射事件即可。

猜你喜欢

转载自blog.csdn.net/weixin_44081533/article/details/125274965