T.TAO
返回博客
/6 min read/Game Engine

UE4 #2 蓝图节点

#UnrealEngine#GameEngine
UE4 #2 蓝图节点

#UnrealEngine4#GameEngine

节点基础

一个节点由以下 3 部分组成:标题、输入和输出。

可以插入或拖出的插口称为 pin。

事件节点

事件节点在特定事件发生时触发。例如我们使用的 Event BeginPlay 节点,会在游戏启动时执行。

命令节点

命令节点执行一组函数。有两种类型:一种标题为蓝色,称为「执行节点」;另一种标题为绿色,称为「读取节点」。执行节点上有两个白色箭头,因此你可以决定哪些节点在其之前执行,哪些在其之后执行。读取节点上没有白色箭头,因为它们只产生数值。

有时节点会隐藏部分值。例如,如果你点击 print string 节点上的下拉箭头,隐藏的值会显示出来:

添加注释

右键点击节点,你会看到可以执行的操作列表:

此时我们先关注节点注释。

在 Node Comment 的输入框中写下内容,即可为该单个节点添加注释。

选中多个节点后,可以为选区创建注释。

节点连接示例

这是让屏幕打印字符串 "UE4"。节点 "Make Literal String" 将你在 Value(UE4) 输入框中输入的内容转换为字符串,返回值传入 "Print String" 节点。最后,该字符串被打印出来。

同样你也可以这样做,效果相同:

类似地我们也可以使用 "Make Literal Int"。这里会自动应用 cast 节点,因为通常我们不能将 string 作为 int 传递。

变量

首先,我们用节点做一个简单的加法。搜索 "+" 节点,找到 "int + int" 节点。

你应该创建如下所示的节点:

好的。我们做一个相对简单的连接,再次使用 "Make Literal Int" 节点。

在 UE4 中检查以确认结果。你的屏幕应该打印 3,因为我们把 1 和 2 相加了。

现在,UE4 原生支持输入数学表达式。它在列表底部。让我们添加一个真正复杂的表达式。请务必在需要时加上括号。

你会看到输入值会自动生成。如果你想修改变量名也没关系:

以上就是基础运算的内容。

接下来我们学习变量。在编程语言中我们通常这样声明变量:

Plain Textint a = 100;
int b;
int c,d,e;

string res = "";
bool success = false;

等等。在 UE4 中,我们也需要确定变量的名称和类型,它们也是数据的容器。

在蓝图编辑器左侧,你可以看到「变量」。点击黄色的 "+ variable" 按钮。(将鼠标悬停在该区域旁边)

详细信息会显示在编辑器右侧。因此,我们可以设置变量名、类型、可见性、分类、工具提示等。你也可以设置默认值。现在我们先创建一个 string 类型。

这样设置后,几乎等同于编程语言中的声明:

Plain Textstring message = "I am a message.";

现在你可以通过将变量从左侧面板拖到编辑器中来设置或获取变量的值。

另外,注意数学表达式会自动检查你是否使用了同名变量。例如:

不再有 "Tony""Steve" 作为输入。表达式会通过将这些变量作为输入计算后返回。

数组

在编程语言中我们有时会声明数组或列表,例如:

Plain Textint[] numbers = new int[5];
int[] numbers;
int* numbers = malloc(sizeof(int) * 5);

在 UE4 中我们也可以创建变量数组。

点击变量类型上的标签,再点击 "array",即可创建整数数组。

编译蓝图后,可以设置数组的初始值。

现在,你可以使用 "Set Array Elem" 节点,设置指定索引的元素值。

这是将第 1 个元素的值设为 1。注意 UE4 数组也是从 0 开始索引的,即从 0 开始计数。当我们说第 0 个元素时,指的是第一个元素。当我们说第 1 个元素时,指的是第二个元素,以此类推。

类似地我们也可以获取值。搜索 "Get Array"。你会看到 "get(ref)" 和 "get(copy)"。我们稍后再讨论它们的区别。

你也可以向数组添加值。

注意这意味着向数组添加 0。

你也可以从数组中移除值,甚至用节点创建数组。请在你自己的 UE4 中尝试,看看这些节点由什么组成。

以上就是关于节点和变量的基础知识。

本系列文章

虚幻引擎 4
  1. 01UE4 #1 基本操作
  2. 02UE4 #2 蓝图节点
  3. 03UE4 #3 材质编辑器
  4. 04UE4 #4 光照:平行光