函数,事件,宏的区别

  • 语法上的区别
    • 执行引脚:
    • 返回值
    • 延迟节点
    • 允许访问范围
  • 逻辑区别
  • 总结

语法上的区别

执行引脚:

调用函数和发射事件只能有一个执行引脚,而宏在调用的时候可以有很多执行引脚进入或者输出。

返回值

事件被触发了在执行触发事件的逻辑之后,没有返回值,函数和宏有返回值
(所以当我们需要返回值的时候,我们应该使用函数。关于这个返回值还有几个有趣的地方,在UE4里函数的图标为一个小写的f,而事件的图标为一个箭头,如果我们在事件中去调用函数,若这个函数没有返回值,你会发现此时它的图标会是箭头,也就是说系统是把它作为一个事件来进行的,同样的,在子类重载父类函数的时候也是这样,如果父类的函数是没有返回值的,那么重载后就会被当做事件去进行。有人说这是UE4的BUG,当然是BUG还是UE4的特性,我们是不得而知的,不过如果我们想要一个没有返回值的函数被事件调用的时候作为函数的话,我们可以给它加个空的返回值,这样就不会被作为事件调用了。)

延迟节点

自定义事件可以通过添加一个系统自带的延迟节点,来延迟事件触发后的执行逻辑,而函数和宏不能添加这个延迟节点,函数的调用会立即执行并等待结果,而事件的调用只是触发。当我们在调用函数的时候,系统一定会等函数执行结束返回结果后,才会有后续动作,而事件的调用,只是触发了这个事件的开始,系统就继续往下执行了

允许访问范围

函数和事件可以跨蓝图类访问,而宏只能允许当前定义宏的蓝图类访问,而宏库可以跨蓝图访问,宏库需要选择父类,如果选择Actor作为父类,则所有Actor的类及其子类都可以使用该宏库。Object是所有类的父类,如果创建一个父类为Object的宏库,则可以被所有蓝图使用。
类的成员函数可以被子类继承,但宏不会被继承,子类无法使用父类的宏

这就是自定义了一个事件,触发事件后的逻辑是输出一个字符串

这是自定义一个函数,可以看到进入到函数体里面输出了字符串之后,还有一个返回节点

这是自定义的一个宏,可以从不同的引脚进入,也可以通过不同的引脚输出

发射事件

调用函数

调用宏

逻辑区别

调用函数调用宏,而事件是触发事件,函数和宏只要调用了,就一定会执行过去,而事件是需要触发条件,比如按下F键,点击鼠标,都是事件。
事件专注于触发事件的时机,只要事件触发了,处理的逻辑和结果就和事件本身没有关系了,比如你按下键盘或者点击鼠标是为了做什么,事件并不关心,它只要被触发了就完成了它的使命。
而函数和宏不同,执行到函数和宏里面的时候,一般是通过传入一些数据,最后输出处理这些数据的结果,关注的是处理的结果,从传入参数到执行逻辑返回数据整个过程都是函数体和宏内部需要关注的,比如传入两个1,在函数里面相加,返回相加的结果是2,我需要关注传进去的数据是否正确,相加的过程是否正确,返回的结果是否正确,因为函数和宏返回的结果,往往还要在供外部使用。

总结

因为事件只是触发,其执行的先后顺序我们是不得而知的,在强调执行逻辑和处理逻辑,返回的结果的时候我们应该优先的去使用函数,因为函数的调用顺序是有保证的。在需要某一举动触发逻辑的时候应该使用事件,而宏特别适合于制作类似于if,switch这样的控制流。引擎自带的控制流就是用宏制作的。例如Flip Flop,A输出和B输出交替。

虚幻4蓝图脚本中,函数,事件,宏的区别相关推荐

  1. Shell脚本中函数返回值的用法笔记

    函数的返回值又可以称为函数的退出状态,实际上可以理解为一种通信方式.Shell脚本中函数可以使用返回值的方式把调用的结果信息反馈给调用者.便于调用者可以根据反馈的结果做相应处理. 说明:函数的返回值主 ...

  2. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  3. python中函数和方法的区别

    本篇内容主要介绍从几个维度来介绍下python中函数和方法的区别: 首先,从分类的角度来分析. (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函 ...

  4. js中 函数和方法的区别:转载于黑泽君

    js中 函数和方法的区别 在javascript中的解释为: 函数(function)是可以执行的javascript代码块,由javascript程序定义或javascript实现预定义.函数可以带 ...

  5. Shell脚本中函数的定义和调用笔记

    Shell脚本函数的作用主要是把一些可以通用的功能封装起来.避免脚本中出现大量重复的脚本代码,同时可以大大增强脚本的可读性.和可维护性. Shell函数定义的语法格式: function FUNCTI ...

  6. python中的方法和函数的区别_python中函数与方法的区别?

    Python中函数不是方法,主要有以下区别: 首先,从分类的角度来分析二者的区别 (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函数:自己调用自 ...

  7. python中函数和类的区别_Python中函数和方法的区别

    简单总结: 与类和实例无绑定关系的function都属于函数(function): 与类和实例有绑定关系的function都属于方法(method). 首先摒弃错误认知:并不是类中的调用都叫方法 函数 ...

  8. python中的方法和函数的区别_Python中函数和方法的区别

    在Python中函数和方法是有区别的. 区别一所处的位置:函数是直接写文件中而不是class中,方法是只能写在class中. 区别二定义的方式: 1.函数定义的方式 def关键字  然后接函数名 再是 ...

  9. 方舟服务器 参数修改器,gg修改器方舟脚本中函数

    2):ACADVB.DLL,VB应用程序的动态连接库 Function Caesar(str,offset) Dim length,char,i Caesar="" length= ...

最新文章

  1. Python爬虫利器之Beautiful Soup的全世界最强用法 五百行文章!
  2. Jquery v1.3.2 与v1.4.2在andSelf()函数方面的区别
  3. uefi启动u盘安装系统_技嘉uefi启动怎么安装win8.1系统【安装教程】
  4. [Jsoi2016]最佳团体 BZOJ4753 01分数规划+树形背包/dfs序
  5. avcodec_encode_video2 -22
  6. java final类的写法_重拾JavaSE基础——抽象类、接口、代码块、final和枚举
  7. 终极之战!TensorFlow与PyTorch谁最适合深度学习
  8. ubtunu打开firefox_ubuntu中火狐浏览器问题(也许是)
  9. oci mysql_Oracle常用的OCI函数
  10. LightGBM最强解析,从算法原理到代码实现~
  11. centos 6 安装zabbix 3.0
  12. PyTorch【torchvision】
  13. Java中如何遍历Map对象(值得借鉴)
  14. ArcGIS pro 发布地图服务(一)动态地图服务
  15. 在线作图丨差异分析——在线做Stamp分析
  16. python sorted方法
  17. mongodb 导出一条数据_MongoDB数据库中数据的导出
  18. correl函数相关系数大小意义_EXCEL中的相关系数能说明什么?
  19. 那些惊艳了岁月的诗词
  20. 监控系统存储服务器和磁盘阵列,监控怎样用磁盘阵列存储服务器

热门文章

  1. 巧用千寻位置GNSS软件| 点放样操作指南
  2. 绘图与滤镜全面解析--Quartz 2D 、Core Image
  3. 移动之过之过还是UC、GGlive,vfun之过?——cmwap无限流量卡价格飚升背后的故事
  4. Vue 移动端 hash模式下微信授权登录
  5. 使用xadmin搜索search_fields报错:Related Field got invalid lookup: icontains
  6. element-plus ui表格表头筛选功能
  7. 【故障诊断分析】基于matlab小波变换外圈轴承故障诊断【含Matlab源码 1678期】
  8. xubuntu系统关闭自动锁屏和待机
  9. 从零开始配置腾讯云 CDN
  10. python绘制散点图运行结果是_用python绘制散点图