元素

节点

节点是您的流程图的基本构建单元。
每个节点都提供某种功能,其基本理念是处理输入并生成输出。 一个很好的例子就是“表达式”节点:

它通过输入引脚接收 “a” 和 “b” 的数值,进行处理后,通过输出引脚返回 “value”。
借助 Flowgraph 提供的丰富节点类型,您可以构建复杂的场景,为关卡带来互动性。
另外也有一些节点仅用于输出数值,没有任何输入引脚:

此“数值(Number)”节点提供一个数值,这个数值可以在节点内部设置,而不是通过输入引脚传入。
另一方面,也有一些节点只通过输入引脚接收数据并进行处理,但没有任何输出引脚。例如,它们可能会把输入存储到一个变量中,或者在游戏世界中触发某些反应。

例如,这个“消息”节点会接收一条消息和一个持续时间,然后在游戏内的界面上将这条消息显示给玩家。它本身没有任何输出。
大多数节点需要“流(flow)”才能运行。你可以在此处 了解更多关于流(flow)的信息。

创建节点

有多种方式可以向你的图表中添加节点。
最简单的方法是在图表的空白处点击 右键,然后在弹出的菜单中选择你想要添加的节点。

另一种添加新节点的方法是,按住 左键 从某个引脚拖拽连线到图表的空白区域。这样新建的节点会被直接连接到该引脚上。

最后,您还可以通过“节点库”窗口来创建节点。您可以在窗口 页面了解更多信息。

删除节点

你可以通过以下方式删除节点:

  • 选中节点后按下 Delete 键。
  • 在节点上点击 右键,然后在菜单中选择 删除

节点行为

Flowgraph 的不同节点为你的项目提供了丰富多样的功能。为了帮助你更好地理解如何与节点交互,以及节点的工作方式,我们引入了节点行为

你可以在节点标题栏右上角看到这些行为的图标。将鼠标悬停在节点上时,会显示这些行为的详细解释:

当前 Flowgraph 中存在以下几种节点行为:

  • 一次性(Once)
    此节点仅执行一次功能,之后需要重置才能再次使用。
  • 持续性(Duration)
    此节点的功能需要超过一帧的时间才能完成。
  • 简单型(Simple)
    此节点不需要流信号即可运行。

动态节点

在 Flowgraph 里,节点的标准行为是:只要节点持续接收到流信号,就会反复执行其功能。但有些节点只执行一次更为合理,比如“生成载具”节点。我们一般不希望它每一帧都生成一辆载具;带有 图标的节点代表它们是“一次性”节点。
在“重复执行”和“一次性”行为之间,还有一些节点可以按不同需求切换使用方式。例如“设置重力”节点就是一个例子。

1. “重复”用法

在这种情况下,只要节点持续接收到流(flow)信号,每一帧都会设置重力。这在需要动态调整输入数值并实时更新重力时非常有用。

2. “一次性”用法

在这种情况下,我们只会设置一次重力,即使有持续的流信号输入。之后需要通过“重置(reset)”引脚进行重置,该节点才能再次工作。这通常适用于玩家进入新阶段时,仅需调整一次重力的场景。

在早期版本的 Flowgraph 中,如果你想实现“一次性”行为,必须在该节点之前添加一个额外的“一次性(Once)”节点,将流信号转换成脉冲(impulse)。 为了让你可以更灵活地控制节点的用法,我们增加了“动态节点(Dynamic Nodes)”。这些节点可以根据需求在“重复”(Repeat)与“一次性”(Once)行为之间切换。

切换行为时,你只需选中节点并在“属性(Properties)”窗口中查看。
在此窗口你会看到设置为一次性设置为重复按钮,点击即可动态切换节点的行为。


引脚(Pins)

引脚定义了一个节点的输入和输出。

节点左侧的引脚为输入引脚,右侧的引脚为输出引脚。为了让 Flowgraph 实现交互和数据流动,你可以将不同节点的输入引脚和输出引脚连接起来,形成所谓的链接(Links)。更多关于链接的内容可在下文阅读。 每个引脚都有自己的类型,用于定义节点的输入和输出是什么类型:

符号
类型
取值
示例
符号
类型
流 (Flow)
取值
有流或无流
示例
Flow
符号
类型
布尔型 (Bool)
取值
True 或 False
示例
True
符号
类型
数值型 (Number)
取值
任意数值
示例
1.5
符号
类型
字符串 (String)
取值
任意文本
示例
‘Hello World!’
符号
类型
三维向量 (Vec3)
取值
任意三维向量,如位置或缩放
示例
{1.0; -2.0; 3.5}
符号
类型
四元数 (Quat)
取值
表示旋转或旋转偏移的任意四元数
示例
{0.1; 4.3; -2.1; 0.0}
符号
类型
颜色 (Color)
取值
4 个颜色分量(RGBA)
示例
{0.3; 0.4; 0.2; 1.0}
符号
类型
任意类型 (Any)
取值
任意类型的值
示例
‘Hello’或-5.3或True
符号
类型
表格 (Table)
取值
多个数值
示例
{5; 6; 8; 10; 22; 9}

有了这些类型,我们可以确保“数值型”输入引脚只能从“数值型”输出引脚接收数值,其他类型的引脚无法与之连接。
如果你不清楚某个引脚的具体功能,可以将鼠标悬停在该引脚上查看节点作者提供的工具提示。


引脚可见性

在许多情况下,你可能并不需要某个节点中的所有引脚,这时可以将当前不需要的引脚隐藏起来。
可以通过选中节点,并在“属性”窗口中查看相关设置。在这里,你可以通过 图标来切换引脚的可见性。

固定输入(硬编码)引脚

另一种常见情况是,你希望为某个引脚设置一个固定输入值,不需要通过其他引脚控制。例如消息字符串始终为 “Hello World!”。此时可以使用所谓的“硬编码”引脚。
你可以在“属性”窗口中选中该节点并点击相关的引脚符号,将普通引脚切换为 符号表示的“硬编码”引脚。
这样你就可以直接修改该引脚的值,而不需要再通过其他引脚进行输入。


链接(Links)

链接通过连接不同节点的引脚,定义了 Flowgraph 的流程。

当你创建一个链接时,你实际上是在指定,该链接所连接的输出引脚将会从输入节点接收其输入数值。
只有当两个引脚类型匹配时,才能创建链接。根据节点的类型,不同类型的链接会有不同的颜色:


创建链接

链接可以通过多种方式创建:

  • 按住 左键点击 一个引脚,并将链接拖到另一个引脚上。你只能连接输入引脚到输出引脚:


  • 按住 左键点击 一个引脚,将链接拖到画布的空白区域,然后选择要创建的节点。这样会自动在该引脚与新节点之间创建链接。你只能选择拥有与所创建链接类型相匹配引脚的节点:


  • 按住 Ctrl,选择两个节点并按下 C。这会自动将所有类型相同的引脚互相连接起来。


移除链接

你可以通过多种方式移除链接:

  • 最简单的方法是选中链接并按下 Delete 键。


  • 你也可以在链接上点击 右键,然后在菜单中选择 删除 来移除链接。


  • 要移除某个节点上所有的连接,可以先选中该节点,然后按下 X 键。


  • 如果你按住 Ctrl 并选择多个节点,第一次按下 X 会移除这些节点与外部的所有链接,第二次按下 X 会移除这些节点组之间的所有内部链接。


  • 当然,你也可以通过删除其所连接的节点之一来移除链接。

隐藏链接

为了提升流程图的可读性,你可以隐藏链接。
这可以通过多种方式实现:

  • 在链接上点击 右键,然后在菜单中选择 隐藏链接

  • 选中一个或多个链接时,按下 H 键。

  • 选中一个或多个节点时,按下 H 键,这将隐藏这些节点所连接的所有链接。


你也可以通过多种方式恢复显示被隐藏的链接:

  • 如果你刚刚隐藏了链接,可以再次按下 H 键来恢复显示。

  • 选中一个节点后,被隐藏链接的“虚影”会出现。点击此虚影即可恢复显示链接。

  • 在选中一个或多个节点时,按下 Ctrl+H 组合键,可以恢复显示所有已连接的被隐藏链接。


图是你 Flowgraph 项目的容器。

你的项目由不同类型的图组成,这些图共同构建了你的项目逻辑。将功能分散在多个图中(而不是只用单个大图)可以提升项目的可读性,每个图都有独立的功能。
让我们来看看 Flowgraph 中存在哪些不同类型的图。

流程图

流程图是 Flowgraph 中最基础的图类型。

一个激活的流程图会通过其「on Update」节点输出流程 。这个流程可以激活其它节点,从而在流程图中实现功能。
On Update」节点有 3 个流程输出引脚:

  • enterState:
    图被激活时只输出一次流程。通常用于初始化图或通用启动行为。
  • flow:
    每一帧都输出流程。许多节点需要持续的流程才能运行,这将为流程图的主要部分提供动力。
  • exitState:
    图被退出时只输出一次流程。通常用于在进入下一个流程图前进行清理工作。当使用「Transition」节点离开图时会触发 exitState。

状态图

每个 Flowgraph 项目至少有一个状态图。

状态图不像流程图那样有流程(flow),它只由状态组成,每个状态要么处于激活状态,要么处于未激活状态。
状态入口”(State Entry)节点作为状态图的起点。
可以有多个状态同时处于激活状态,当“状态出口”(State Exit)被触发时,这些状态都会变为未激活状态。
一个状态可以是以下两种之一:

  • 流程图(Flowgraph)
    当流程图被激活时,它的 “On Update” 节点将开始输出流程。
  • 分组状态(Groupstate)
    分组状态的行为与状态图类似,激活后会从其 “State Entry” 节点开始。
    这允许你将项目的主要行为分组到一个分组状态中,使结构更加清晰。

状态的切换(state transition),可以通过流程图中的 “Transition” 节点或分组状态中的 “State Exit” 节点来触发。

每个状态可以有不同的输出引脚用于切换,这有助于区分不同的切换原因,例如成功或失败。
你可以在选中状态后,通过“属性”窗口修改这些输出引脚。
随后,你可以在 “Transition” 节点或 “State Exit” 节点中修改要触发的切换。

转换堆栈

在许多情况下,你希望在同一帧内,在不同状态之间传递一个值。
这可以通过 “转换堆栈”(Transition Stack)来实现。转换堆栈会被传递给后续状态,并按照变量名称进行索引保存。
你可以通过 “Transition” 节点向堆栈中添加值。在节点的“属性”窗口中可以添加或移除转换变量。

这些变量可以在后面的状态中通过 “获取转换变量”(Get Transition Variables)节点访问。

由于转换堆栈中的值是按名称索引的,存储和读取转换变量时使用的字符串必须完全一致。
如果已经存在的变量被再次设置,它的旧值将会被覆盖。

上一次修订: 六月 2, 2026

还有其他问题?

加入我们的 Discord 服务器
Our documentation is currently incomplete and undergoing active development. If you have any questions or feedback, please visit this forum thread.