很多刚接触ue的小伙伴不太清楚函数,事件和宏的区别,什么时候用哪个?
怎么用?今天我们通过这篇文章来了解一下
如果把他们三个比如员工,他们都可以干单独的工作,你可以把分配给他们的工作写到函数,事件或者宏的里面
函数可以有返回值,也就是说他干完工作会给你一个你需要的反馈
宏也可以有返回值,而且他还可以有多个输入和输出引脚,做到一心多用
事件比较专一,他没有反馈,但是他的里面可以增加延迟这样的节点(宏也可以有),而这个节点在函数里是无法使用的,还有一些时间性的节点,比如时间轴也无法在函数使用
事件一般用于触发,比如增强型输入,debug key,重叠事件,点击事件,都是触发性的,达到某个条件就可以执行,当然自定义事件类似函数和宏,可以随时调用
函数的执行,系统会执行完整个函数后才会返回结果,他执行在同一个线程里,可以等待执行,事件只要触发就会继续执行下去,他可以执行在不同的线程,就是一个开关
函数和事件这两个员工是可以跨部门执行任务的,其他部门想调用他们哥俩就可以随时调用,当然你得cast转换一下他们所属的蓝图部门,或处于这个部门的子部门
而宏则只能在本蓝图部门工作,外部不能调用他们,但是如果你的蓝图作为父级,有子级,也就是分部部门,那么他们可以调用父级部门的宏
或者建立蓝图宏库,选择object,这样所有蓝图都可以调用该宏
父类是actor,子类可以使用父类的宏
父类是object,所有蓝图都可以使用这个父类的宏
父类是class,子类无法使用父类的宏
事件和宏是没有局部变量的,只能使用全局变量
函数可以创建专属自己的局部变量,这个变量只在当前函数里使用有效,是私有的财产
什么时候用他们?
触发类的就用事件,事件注重触发条件,不注重过程,比如我要点击某个按键使用某个技能,就可以用事件触发
函数和宏注重结果,比如我要传递一个HP过去,然后计算一下我升级之后HP增加多少,我就可以用函数或宏,算完的新的HP传递回来,我还需要这个变量
宏适合内部调用,重复性的数值计算,其他蓝图不需要这个功能,这个功能是我这个蓝图独有的,我就可以用宏,另外宏也很适合if ,switch,flipflop这类的控制流节点
跨蓝图调用,需要有返回值反馈的就用函数,比如我们可以建立一个函数库,作为公用函数在任意蓝图调用,函数有些类似工具人
当然,函数和宏里可以调用事件,事件里也可以调用函数和宏,所以如何灵活使用就看程序本身实际需要,并无硬性需求
根据网络上的原理介绍资料显示,从编程语言底层执行效率来说,函数的开销更大一些,因为他要分配新的栈空间,每次return返回也要释放栈,会额外增加执行负担,宏只在编译前进行,不额外分配多余空间,只占编译时间,执行速度更快,当然,咱也不是研究底层计算机原理和代码的,所以这段就当做个参考,现今cpu执行效率都很高,这点差距除非是很大型的数据处理,一般在实际运行中不会有太大差别。
以上内容由老蒋原创整理,如需转发请注明出处