蓝图:函数

在这篇文章中,我们讲解蓝图中的函数。具体介绍函数的输入输出、纯函数和成员函数。

1. 函数

目前我们的功能基本都实现好了。虽然功能不多,但是蓝图界面已经显得很“杂乱”了。我们可以把具体的流程变成函数,这样不仅界面简洁,逻辑也更易读。

我们可以选择组成函数片段的多个节点,然后右击选择 折叠到函数。这样在界面上,就会显示“折叠”的函数节点。如图 1 所示,我们把生成弹药、减少弹药数、打印等功能,都“折叠”成函数了。界面看起来整洁不少。

图1 函数

2. 输入和输出

函数可以折叠得到,也能自己创建。创建方式和创建变量类似,在函数一栏点击加号创建。

函数流程和之前的关卡蓝图中的操作一样。不一样的地方是,函数可能会有输入和输出。如图 2 所示,我们可以在函数界面右侧,“输入”和“输出”一栏中点击加号添加。

图2 函数节点

3. 纯函数

在 Unreal 中,纯函数是一种特定的函数,它不改变游戏世界或对象的状态。在图形表示上,纯函数没有执行引脚。

教程中的解释是,纯函数必须要没有副作用。但什么是副作用也不太清楚,这边先理解成类似线程安全之类的东西。

像图 2 中的 HasAmmo 函数,只是查询变量的状态,我们可以设置成纯函数。设置的方式是,在函数“细节”界面,勾选 纯函数

4. 成员函数

和 C++ 中的逻辑是一致的,成员函数也是普通函数的格式,不过是多了一个 this 指针。

如图 3 所示,我们在之前新建的“弹丸”蓝图类里增加一个 Launch 函数,用于封装之前的加冲量发射逻辑。逻辑和之前的实现是一样的,我们可以复制得到。不一样的地方是,我们需要获取“this 指针”,作为相关函数的输入。“this 指针”可以通过 Get a reference to self 节点获取。

图3 成员函数

创建好成员函数之后,如图 4 所示,我们像使用内置函数那样操作即可。

图4 使用成员函数