跳到主要内容

游戏事件节点编辑器

节点编辑器是一个可视化编排工具,通过在单个可读图表中显示复杂的事件依赖关系来解决"意大利面条代码"问题。

您只需查看流程图,而不是在分散的脚本中寻找以了解事件为什么触发。

Flow Graph Editor Overview


🎯 设计理念

传统的Unity事件是"即发即弃"——非常适合解耦,但对于调试序列来说很糟糕。

流程图引入了两种强大的执行模式

模式执行行为使用场景
触发器(扇出)并行非阻塞。一个事件同时触发多个其他事件"OnPlayerDeath" → 播放声音 + 生成粒子 + 显示UI
(序列)串行阻塞。事件一个接一个地触发,带有延迟"StartCutscene" → (等待2秒) → "ShowDialog" → (等待输入) → "EndCutscene"

🎯 触发器(扇出)

Flow Graph Editor Overview

⛓️ 链(顺序)

Flow Graph Editor Overview

通过组合这些模式,您可以构建既解耦结构化的逻辑。


🚀 打开编辑器

从**游戏事件编辑器**访问流程图编辑器

游戏事件编辑器 → 点击工具栏中的"Flow Graph"按钮

这确保您在正确的事件库上下文中工作。


🛠️ 工具栏概览

工具栏管理流程图资产和全局设置。

Flow Graph Editor Overview

流程资产下拉菜单

在不同的流程图资产之间切换(例如,Global_FlowLevel_1_Flow)。

切换时图表内容立即更新

资产组织

为不同的游戏系统创建单独的流程图,以保持逻辑清晰和可维护。将图表作为子资产存储在流程容器资产中。

图表管理

新建按钮+ New):在当前容器中创建新图表。

图表名称字段:点击重命名当前图表。

删除按钮:删除当前图表(需确认)。

图表控制

对齐按钮Snap):切换网格对齐。启用时,节点在移动期间会自动对齐到20单位网格线,确保完美组织的布局。

对齐按钮Align):切换智能对齐指南。启用时,当您拖动的节点的边缘(左、中、右)或中线(上、中、下)与画布上其他节点对齐时,会出现蓝色垂直或水平虚线。

活动切换(🟢 / 🔴):在运行时启用/禁用整个图表。

刷新按钮:从GameEventManager重新加载容器列表。

帮助按钮? Help):打开快速参考指南,包含所有快捷键和颜色代码。

Flow Graph Editor Help


🖱️ 画布导航

编辑器具有为大规模逻辑图表设计的无限可缩放画布。

基本控制

操作控制描述
平移视图鼠标中键拖动在画布上移动
缩放滚轮放大/缩小(以鼠标光标为中心)
上下文菜单右键点击添加节点或组
快速创建双击在空画布上打开节点创建菜单

缩放范围:0.2x - 3.0x(20%到300%)

网格:次要线条每20个单位,主要线条每100个单位。启用Snap时,节点锁定到20单位次要网格线。


🎯 使用节点

创建节点

Flow Graph Editor Overview

操作控制描述
快速创建双击画布打开节点创建菜单
上下文菜单右键点击 → 添加节点创建触发器或链节点
从选择右键点击节点节点操作的上下文菜单

节点类型

  • 触发器节点:并行执行(扇出模式)
  • 链节点:顺序执行(序列模式)

节点选择

操作控制描述
选择节点左键点击选择单个节点
添加到选择Ctrl/Shift + 点击切换节点进/出选择
框选左键点击 + 拖动选择矩形中的所有节点
全选Ctrl + A选择图表中的所有节点
清除选择Escape取消选择所有内容
编辑节点双击节点打开节点行为配置

移动节点

操作控制描述
移动节点左键拖动移动选定的节点
多重移动左键拖动(带选择)一起移动所有选定的节点

组行为:当节点属于一个组时,移动它们会自动更新组边界。

布局助手

  • 网格对齐:当Snap激活时,移动被锁定为20像素增量,与背景网格匹配。
  • 智能对齐:当Align激活时,编辑器通过蓝色虚线提供视觉反馈。它自动检测对齐:
    • 垂直:左边缘、水平中心和右边缘。
    • 水平:顶部边缘、垂直中心和底部边缘。

节点上下文菜单

Flow Graph Editor Overview

右键点击节点以进行快速操作:

  • 编辑节点:打开行为配置窗口
  • 复制节点:复制到剪贴板
  • 剪切节点:复制并删除
  • 删除节点:删除节点和所有连接
  • 设置为根:标记为图表入口点
  • 转换为触发器/链:更改节点类型

多选上下文菜单

Flow Graph Editor Overview

当选择多个节点时,右键点击显示:

  • 复制N个节点:将选择复制到剪贴板
  • 剪切N个节点:复制并删除选择
  • 删除N个节点:删除所有选定的节点
  • 创建组:从选定的节点创建组(至少需要2个节点)

🔗 创建连接

连接定义节点之间的事件流。

连接操作

操作控制描述
创建连接从输出端口(右)拖动拖动到另一个节点的输入端口(左)
重新路由连接从输入端口拖动断开连接并连接到不同的节点
删除连接选择 + 删除删除连接

视觉反馈

  • 拖动时显示预览线
  • 颜色表示兼容性(参见连接类型
  • 无效目标显示为灰色

连接规则

  • 始终从输出(右端口)拖动到输入(左端口)
  • 根节点没有输入端口
  • 节点可以有多个传入和传出连接

📁 分组系统

使用可视化组组织大型图表以提高可读性和可维护性。

Flow Graph Groups

创建组

方法1:选择节点 → 右键点击 → 创建组

方法2:使用框选 → 右键点击选择 → 创建组

要求

  • 至少需要2个节点
  • 选定的节点将被分组在一起
  • 根据节点位置自动计算组边界

管理组

操作操作方法结果
重命名双击组标题进入编辑模式(Escape取消)
选择组左键点击组区域选择整个组
移动组拖动组区域一起移动所有成员节点
仅删除组Delete键删除组框架,保留节点
删除组 + 节点Shift + Delete删除组和内部所有节点

视觉指示器

  • 选定的组:更亮的边框 + 高亮标题
  • 组标题:显示在组边界的右下角
  • 组边界:半透明圆角矩形

组成员资格

向组添加节点

  1. 选择现有组 + 要添加的节点
  2. 右键点击 → 创建组
  3. 所有选定的节点将包含在新组中
  4. 旧组被删除,新组被创建

从组中删除节点

  • 从组中删除特定节点
  • 组自动从其成员资格中删除该节点
  • 如果组剩余≤1个节点,组将自动删除

约束

  • 每个节点一个组:每个节点一次只能属于一个组
  • 自动清理:≤1个节点的组将自动删除
  • 动态边界:成员节点移动时组自动调整大小

组上下文菜单

Flow Graph Editor Overview

右键点击组:

  • 重命名组:进入重命名模式
  • 复制组:复制整个组结构(节点 + 内部连接)
  • 删除组(保留节点):仅删除组框架
  • 删除组 + 节点:删除所有内容

📋 复制粘贴系统

复制节点和组以加快工作流程。

节点复制粘贴

操作控制描述
复制节点Ctrl + C将选定的节点复制到剪贴板
剪切节点Ctrl + X剪切选定的节点(复制 + 删除)
粘贴节点Ctrl + V以增量偏移粘贴
重置粘贴Escape重置下一次操作的粘贴计数器

粘贴行为

  • 按Escape重置偏移计数器
  • 保留粘贴节点之间的连接
  • 粘贴的节点永远不会设置为根

组复制粘贴

操作控制描述
复制组Ctrl + C复制整个组结构
粘贴组Ctrl + V以50px偏移粘贴组

复制的内容

  • 组框架和标题(带"(Copy)"后缀)
  • 所有成员节点及其配置
  • 内部连接(组成员之间的连接)
  • 相对节点位置

不复制的内容

  • 外部连接(到/从外部节点的连接)
  • 根节点状态
  • 节点ID(自动生成新ID)
复制策略

右键菜单显示"复制组"选项以便快速访问。Ctrl+C和右键菜单的工作方式相同。使用组作为重复逻辑模式的模板。


⌨️ 键盘快捷键

复制粘贴

快捷键操作
Ctrl + C复制选定的节点或组
Ctrl + V以增量偏移粘贴
Ctrl + X剪切选定的节点(复制 + 删除)

撤销/重做

快捷键操作
Ctrl + Z撤销(最多50步)
Ctrl + Shift + Z / Ctrl + Y重做

历史范围:跟踪节点创建/删除、连接、组更改、位置更改、复制/粘贴操作。

选择

快捷键操作
Ctrl + A选择所有节点
Escape清除选择/取消操作/重置粘贴计数器

删除

快捷键操作
Delete删除选定的项目
Shift + Delete级联删除:删除组和内部所有节点

删除行为

  • 删除节点:删除所有连接的连接并更新组成员资格
  • 删除组(Delete):保留成员节点
  • 删除组(Shift + Delete):删除组和所有成员节点
  • 删除连接:仅删除链接
  • 剩余≤1个节点的组将自动删除

🎨 上下文菜单参考

空白处

  • 添加触发器节点:在光标位置创建新触发器节点
  • 添加链节点:在光标位置创建新链节点
  • 粘贴节点:(如果剪贴板有节点)显示粘贴计数
  • 粘贴组:(如果剪贴板有组)显示组名称

单个节点

  • 编辑节点:打开行为配置窗口
  • 复制节点:复制到剪贴板
  • 剪切节点:复制并删除
  • 删除节点:删除节点和连接
  • 设置为根:标记为图表入口点
  • 转换为触发器/链:更改节点类型

多个节点(选择)

  • 复制N个节点:将选择复制到剪贴板
  • 剪切N个节点:复制并删除选择
  • 删除N个节点:删除所有选定的
  • 创建组:组选择(至少2个节点)

  • 重命名组:进入重命名模式
  • 复制组:复制整个组结构
  • 删除组(保留节点):仅删除组框架
  • 删除组 + 节点:删除组和所有成员节点

📊 状态栏

在画布底部显示实时信息:

  • 当前缩放级别(例如,Zoom: 1.2x
  • 节点计数(例如,Nodes: 15
  • 连接计数(例如,Connections: 23
  • 选择信息(例如,Selected: 3 node(s), 1 group(s)
  • 撤销/重做堆栈深度

🎓 工作流示例

示例1:构建玩家死亡序列

Flow Graph Groups

目标:创建具有并行效果和顺序菜单转换的死亡序列。

步骤1:创建根节点

  1. 双击画布 → 选择"添加触发器节点"
  2. 选择OnPlayerDeath事件
  3. 右键点击节点 → "设置为根"

步骤2:添加并行动作(触发器模式)

  1. 创建3个触发器节点:PlayDeathSoundSpawnParticlesShowGameOverUI
  2. 从根输出拖动 → 连接到所有3个节点(扇出)

步骤3:添加顺序动作(链模式)

  1. 创建链节点:FadeToBlack
  2. 双击 → 设置延迟:2秒
  3. 创建链节点:ReturnToMenu
  4. 连接FadeToBlackReturnToMenu
  5. 连接OnPlayerDeathFadeToBlack

步骤4:使用组组织

  1. 框选所有与死亡相关的节点
  2. 右键点击 → "创建组"
  3. 双击组标题 → 重命名为"Death Sequence"

结果:清晰的并行声音/VFX执行的可视化表示,然后是顺序菜单转换。


❓ 故障排除

更改未保存

原因:Unity尚未序列化更改。

解决方案

  • 关闭窗口以强制保存
  • 切换到另一个图表然后返回
  • 在Unity中按Ctrl+S

图表显示为空

可能原因

  • 工具栏下拉菜单中选择了错误的图表
  • 流程容器未在GameEventManager中分配

解决方案

  • 检查工具栏图表下拉选择
  • 在GameEventManager Inspector中验证容器分配

无法创建连接

可能原因

  • 从输入拖动到输出(方向相反)
  • 尝试连接到根节点的输入端口
  • 连接已存在

解决方案

  • 始终从输出(右)拖动到输入(左)
  • 根节点没有输入端口

组未自动调整大小

原因:仅在移动成员节点时更新组边界。

解决方案:稍微移动任何成员节点以触发边界重新计算。


粘贴的组缺少外部连接

预期行为:仅复制内部连接(组成员之间)。

说明:到组外节点的外部连接有意不被复制,以允许灵活重用组模板。

解决方案:粘贴组后手动重新连接外部依赖项。


无法创建组

可能原因

  • 选择少于2个节点
  • 尝试对已分组的节点进行分组

解决方案

  • 至少选择2个节点
  • 要重新分组,首先删除旧组或选择组和新节点以创建新组

📖 下一步

现在您了解了画布导航和组织,继续您的旅程:

🔗 连接类型与兼容性

核心概念: 了解端口颜色、线条类型和类型兼容性规则。

⚙️ 节点行为配置

逻辑控制: 配置延迟、条件和执行设置。

🧩 高级模式

专家级别: 使用组合模式构建复杂的事件编排。


专业工作流提示

尽早组织:在构建时创建组,以避免以后出现混乱的图表。

自由使用撤销:Ctrl+Z跟踪最多50步——无所畏惧地尝试连接。

构建模板:为常见模式创建可重用的组模板。

描述性命名:清晰的图表和组名称在系统之间切换时有帮助。

设置根节点:为每个逻辑流程序列标记清晰的入口点。

智能复制:构建一次,多次粘贴。使用组作为蓝图。

快速参考

忘记了快捷键?点击工具栏中的帮助按钮(? Help)以查看包含所有键盘快捷键、鼠标控制和可视化颜色图例的完整快速参考指南。