蓝图:函数
在这篇文章中,我们讲解蓝图中的函数。具体介绍函数的输入输出、纯函数和成员函数。
1. 函数
目前我们的功能基本都实现好了。虽然功能不多,但是蓝图界面已经显得很“杂乱”了。我们可以把具体的流程变成函数,这样不仅界面简洁,逻辑也更易读。
我们可以选择组成函数片段的多个节点,然后右击选择 折叠到函数。这样在界面上,就会显示“折叠”的函数节点。如图 1 所示,我们把生成弹药、减少弹药数、打印等功能,都“折叠”成函数了。界面看起来整洁不少。
2. 输入和输出
函数可以折叠得到,也能自己创建。创建方式和创建变量类似,在函数一栏点击加号创建。
函数流程和之前的关卡蓝图中的操作一样。不一样的地方是,函数可能会有输入和输出。如图 2 所示,我们可以在函数界面右侧,“输入”和“输出”一栏中点击加号添加。
3. 纯函数
在 Unreal 中,纯函数是一种特定的函数,它不改变游戏世界或对象的状态。在图形表示上,纯函数没有执行引脚。
教程中的解释是,纯函数必须要没有副作用。但什么是副作用也不太清楚,这边先理解成类似线程安全之类的东西。
像图 2 中的 HasAmmo 函数,只是查询变量的状态,我们可以设置成纯函数。设置的方式是,在函数“细节”界面,勾选 纯函数。
4. 成员函数
和 C++ 中的逻辑是一致的,成员函数也是普通函数的格式,不过是多了一个 this 指针。
如图 3 所示,我们在之前新建的“弹丸”蓝图类里增加一个 Launch 函数,用于封装之前的加冲量发射逻辑。逻辑和之前的实现是一样的,我们可以复制得到。不一样的地方是,我们需要获取“this 指针”,作为相关函数的输入。“this 指针”可以通过 Get a reference to self 节点获取。
创建好成员函数之后,如图 4 所示,我们像使用内置函数那样操作即可。