UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别

蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别

函数VS纯虚函数
UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第1张图片
  • 纯虚函数必须要有返回值
  • 都有临时变量(局部变量),这个变量会在每次进入函数的时候恢复成默认值。
  • 【关键】调用方式:普通函数是有执行线的而调用纯虚函数用的是返回值
    普通函数的返回值只要是在同一条执行线后面,那么从返回节点引出来的结果绝对是相同的,因为这个函数只会执行一次
    而纯虚函数,你每次引出使用返回值,都会执行一次这个函数,所以它的结果有可能不一样。


    UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第2张图片
    你的蓝图看似是上面那一个,实际上是下面那个

    UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第3张图片
    这种调用方式实际上是可行的,
自定义事件
  • 自定义事件的代理


    UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第4张图片
    自定义事件的代理
  • 自定义事件的RPC


    UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第5张图片
  • 自定义事件不能有返回值
  • 自定义事件的事件还可以在编辑器实例(拖入场景中的对象)中调用,只需要勾选(但是不能有输入值)
    UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第6张图片

    UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第7张图片
  • 一些只能在EventGraph中调用的节点,如时间轴。
  • 都存在于同一空间,所以可以完成很多奇淫技巧


    UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第8张图片
蓝图宏

我们先看看蓝图宏比其他的方法多了些什么


UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第9张图片
多了一个Exec执行节点,一个通配符
  • 它可以像纯虚函数一样不需要执行节点,但是不同的是纯虚函数内部是有Exec的,而这样的宏没有Exec的,也就只能使用没有Exec的节点了
  • 可以有多个输出Exec和输入Exec,ForLoop循环就是宏做的,你可以双击查看实现
  • 蓝图宏有类似于函数的局部变量,名叫本地变量Local,但是请注意,完全不一样,无论是值的限制,赋值方式都不一样。这个值是具有持久性的(Persistent)。


    UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第10张图片

    UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第11张图片

    UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别_第12张图片
    赋值方式也是通过节点实现

这个本地变量在不同的地方(作用空间:EventGraph/函数/宏)执行,其结果也不相同
在EventGraph中调用:它的值是不会在这个宏调用结束后清空,意思就是这个值是持久的,
在函数中直接调用:它的值会在,函数执行结束后(Return)清空,这个持久性只维持在这个函数中。
在函数中调用自定义事件中的宏:结果于在EventGraph中调用一致,因为实际上还是在EventGraph中调用
在宏中调用宏:根据上面不同情况结果也不同。

你可能感兴趣的:(UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别)