本文主要是介绍UE4-(蓝图)第一百一十四课 宏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
宏特别合适用来制作控制流,因为宏有多个入口及多个出口,系统提供的宏有FlipFlop、DoN等
可以简单认为,蓝图的编译也是分为上图中的四个步骤,蓝图中的宏是在预处理阶段进行处理的
宏与函数区别:
一、“展开”就是直接将宏代码直接复制粘贴替换到所有使用当前宏的地方。
二、有无实体:调用函数,在运行时会跳转到函数实体中执行逻辑。宏在预处理之后就会消失,没有实体。
三、函数需要在一帧之内执行完成,所以不能使用Delay。
四、在蓝图类中创建的宏,不能被子类继承,子类也无法使用父类的宏。 而函数可以被子类继承。
五、宏的参数可以定义为Exec 类型。函数不可以。
六、宏可以定义多个入口及多个出口,函数只有一个进口和一个出口
七、可以创建自定义宏库,需要设置选择父类,只有父类类型及所有子类才可以使用该自定义的宏库。比如:以Actor为父类创建的宏库,所有的Actor及以Actor作为父类的子类都可以使用该宏库。Object类型是所有类型的父类,如果创建一个类型为Object类型的宏库,可以被所有蓝图使用。制作函数库,没有任何限制,都可以被蓝图使用。
示例:制作宏库
一、制作以Object为基类的宏库,创建完成后命名为MyStandardLibrary
二、创建宏并实现逻辑AB交替出现(FlipFlop节点功能)
1.双击打开宏库,可以点击+号添加宏,默认会创建一个宏,命名为MyFlipFlop
2.宏中的特征:在宏中定义局部变量,在宏蓝图界面空白处右键搜索Local,可以定义想要类型的局部变量,这种定义局部变量的方式只有在宏中才有。(在函数中,需要在局部变量列表添加变量,宏中需要使用节点创建)
创建一个Bool类型的 局部变量
3.设置逻辑宏输出参数,为Exec类型的两个值分别为A,B,选中宏,点击+号增加变量,并设置类型及名称。设置输入参数为Exec类型
4.对宏中的局部变量赋值节点 Assign 执行一次逻辑就需要将局部变量取反
5.完成逻辑
6.为了获取当前bool值所以要添加 bool 类型的输出参数,用于外界获取到当前bool 值
7.创建一个Actor为基类的蓝图类调用宏,在蓝图类右键搜索MyFlipFlop
注意:因为是以Object类型为基类,Actor类型是Object的子类,所以也可以调用宏,但是actor本身没有接受玩家输入操作,所以要开启接受玩家输入操作,才能够在按键的时候响应。使用 Enable Input 节点。
运行:
这篇关于UE4-(蓝图)第一百一十四课 宏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!