跳到主要内容

Flow 节点

GCS · 内置节点库

控制连接节点何时执行以及按什么顺序执行

Flow 节点负责控制执行路径,可用来分支、重复、等待、排序或暂停流程;需要计算数值时,应使用 Operator 节点

Flow 节点负责控制执行路径,可用来分支、重复、等待、排序或暂停流程;需要计算数值时,应使用 Operator 节点


节点用法

Sequence

从上到下依次执行各个步骤。一个入口需要按固定顺序启动多段独立逻辑时使用,例如先造成伤害,再修改状态,最后播放表现效果

输入端口

  • In(控制):开始执行 Sequence

输出端口

  • Step0StepN(控制):按编号顺序各执行一次,端口数量由 Outputs 决定

参数

  • Outputs(整数):2;顺序步骤数量,修改后会重建可见输出端口

步骤会按编号顺序启动,完全同步的路径会在下一步开始前执行完;路径遇到 WaitChoice 后会在该节点返回,后面的步骤可能先于延迟或选择分支的继续逻辑开始。如果多个路径只能选一个,应使用 BranchSwitch

Outputs 设为 0 或负数时,没有任何 Step 路径会执行

带有三个顺序输出的 Sequence 节点

Branch

根据布尔值在两条路径中选择一条,常见连接是 Condition.ResultBranch.Condition

输入端口

  • In(控制):触发本次判断
  • Condition(布尔):trueTruefalse 或未连接时走 False

输出端口

  • True(控制):条件为 true 时执行
  • False(控制):条件为 false 时执行

参数:

每次只会执行一个输出;如果 false 时什么都不做,可以不连接 False

带有 True 和 False 输出的 Branch 节点

Switch

用整数或字符串匹配多个 case,适合卡牌类型、意图名称、回合模式等超过两种结果的判断

输入端口

  • In(控制):开始匹配 case
  • On(整数或字符串):与 Case Values 比较,类型跟随 Kind

输出端口

  • Case 1Case N(控制):每个值对应一个界面端口,顺序一致,序列化名称为 Case0CaseN-1
  • Default(控制):没有 case 匹配时执行,连接 On 后和 case 输出一起显示

参数

  • Kind(内部字段)Int / String):推断前为 Int;根据连接到 On 的数据类型自动设置,编辑器中没有单独的选择器
  • CasesCase Values(整数或字符串列表):连接 On 前为空;UI 数量包含 Default,其余每一行保存一个 case 值并创建一个可见 case 输出

字符串采用区分大小写的精确匹配。case 从上到下检查,重复值只会命中第一项;Int 模式下无法解析为整数的条目会被跳过

null 字符串输入按空字符串处理,因此可以命中空字符串 case

编辑器需要先连接 On 才能配置 case 或看到这些控制输出,可见的 Cases 数量包含最后的 Default,因此 Cases = 3 会创建两个可编辑值,以及 Case 1Case 2Default 三个界面输出

以 Attack 和 Defend 为字符串 case 的 Switch 节点

Gate

只有布尔条件为 true 时才让执行继续,适合不需要单独处理 false 分支的简洁前置条件

输入端口

  • In(控制):检查 Gate
  • Allow(布尔):true 时放行,false 时终止当前路径

输出端口

  • Out(控制):仅在 Allow 为 true 时执行

参数:

未连接的 Allow 为 false,执行会停在这里;两个结果都要执行不同逻辑时应使用 Branch

带有 Allow 输入的 Gate 节点

Loop

按固定次数重复同一段逻辑,需要按轮次缩放数值、选择元素或显示编号时可以使用从 0 开始的 Index

输入端口

  • In(控制):开始循环
  • Count(整数):Body 的执行次数,未连接时使用同名字段

输出端口

  • Body(控制):每轮执行一次
  • Done(控制):所有轮次结束后执行,次数为零或负数时也会直接执行
  • Index(整数):当前轮次,从 0 开始

参数

  • Count(整数):1Count 端口未连接时的备用值

每轮 Body 的同步部分执行完成后才进入下一轮;如果路径遇到 WaitChoice,下一轮会在异步节点返回后开始,不会等待它之后的回调。已有集合并且需要拿到当前元素时,应使用 Foreach

每轮都会覆盖同一份执行上下文中的 Index 结果,如果路径在读取 Index 前进入等待,回调恢复后可能读到后续轮次甚至最后一轮的值,应在异步边界之前消费或保存它

带有 Body、Done 和 Index 输出的 Loop 节点

Foreach

按集合原有顺序逐个处理单位、卡牌或状态,并提供当前元素和从 0 开始的索引

输入端口

  • In(控制):开始遍历
  • Collection(单位、卡牌或状态集合):待遍历集合,类型跟随 Kind

输出端口

  • Body(控制):每个元素执行一次
  • Done(控制):最后一个元素结束后执行,集合为空或 null 时直接执行
  • Element(单位、卡牌或状态引用):当前元素,类型跟随 Kind
  • Index(整数):当前元素索引,从 0 开始

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据连接到 Collection 的集合自动设置,不能直接编辑

应把 Element 连接给 Body 内的 Action;如果连接整个集合,同一个集合动作会在每轮重复执行

集合中的 null 元素也会占用一轮,此时 Body 仍会执行,Element 为 null

Loop 一样,路径遇到 WaitChoice 不会暂停遍历,下一个元素可能先于异步回调恢复执行

Foreach 直接遍历原集合引用,不会创建快照;Body 同步增加、移除或移动元素会改变 Count 和索引,可能跳过元素或处理后来加入的元素。每轮还会覆盖共享的 ElementIndex,因此应在进入 WaitChoice 前消费或保存它们

用于单位集合的 Foreach 节点

While

在布尔条件保持 true 时反复执行 Body,仅适用于 Body 会改变条件所读取数据的场景

输入端口

  • In(控制):开始检查条件
  • Condition(布尔):每轮开始前重新读取

输出端口

  • Body(控制):条件为 true 时执行
  • Done(控制):条件变为 false 后执行

参数:

While 必须同步变为 false

如果 Body 返回前没有让 Condition 变为 false,外层循环会继续执行并可能卡死游戏;Body 未连接且条件为 true 时会立刻进入死循环,把 WaitChoice 放进循环也不能安全让出执行,因为这些节点返回后 While 仍会继续。下一轮属于之后帧或回合时,应使用 LoopForeachDelayed Trigger

带有 Body 和 Done 输出的 While 节点

Wait

暂停当前控制路径后再继续,短暂的表现节奏使用 Seconds,需要由其他表现代码明确释放时使用 Animation

输入端口

  • In(控制):开始等待
  • Seconds(浮点数):Seconds 模式显示,连接值会覆盖 Inspector 时长
  • AnimationId(字符串):Animation 模式显示,连接值会覆盖 Inspector ID

输出端口

  • Out(控制):等待结束后执行,无法建立等待任务时立即执行

参数

  • ModeSeconds / Animation):Seconds;决定显示的输入端口和等待方式
  • Seconds(浮点数):0.5Seconds 模式的等待时长
  • Animation Id(字符串):空;Animation 模式等待的 Gate reason

Seconds 小于等于 0 时立即继续。Animation 不会自动监听 Animator 的 clip 或 trigger,表现层必须在节点执行前已经 Acquire 同名的 AnimationGate reason;reason 没有被持有时会立即继续,被持有时会等到释放,或在五秒安全超时后继续,空 Animation Id 会使用 Flow Wait

按秒等待的 Wait 节点

Delayed Trigger

把一段逻辑登记到之后的战斗阶段执行,同时让当前图从 Done 继续,适合倒计时效果,不适合短暂的画面停顿

输入端口

  • In(控制):尝试登记延迟逻辑

输出端口

  • Body(控制):保存为未来执行入口,本次不会立即运行
  • Done(控制):登记后立即继续

参数

  • Delay Turns(整数):1;经过多少回合后允许触发
  • Fire AtTick PhasePlayerTurnEnd / PlayerTurnStart / EnemyPhaseEnd):PlayerTurnStart;推进并触发计时的战斗阶段
  • Cancel If Source DiesCancel On Source Death(布尔):关闭;来源单位死亡后取消待执行逻辑

只有 Body 已连接且 Delay Turns 大于零时才会登记延迟逻辑。设置为零或负数时仍然只走 Done,不会改成立即执行 Body

带有延迟 Body 和即时 Done 输出的 Delayed Trigger 节点

Choice

把单位、卡牌或状态集合交给运行时选择界面,再根据玩家确认或跳过进入对应路径,用于需要玩家作出选择的效果

输入端口

  • In(控制):打开选择界面
  • Options(单位、卡牌或状态集合):候选集合,null 元素会被忽略,类型跟随 Kind
  • Count(整数):编辑器已经声明该端口,但当前执行器不会读取连接值

输出端口

  • OnChosen(控制):玩家确认有效选择后执行
  • Skipped(控制):玩家跳过,或当前没有 presenter / 候选项时执行
  • Chosen(单位、卡牌或状态集合):玩家确认的结果,类型跟随 Kind

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Card;根据连接到 Options 的集合自动设置,不能直接编辑
  • Prompt(字符串):空;选择界面显示的提示
  • Count(整数):1;当前运行时实际使用的最多选择数量
  • ModeExactly / UpTo):Exactly;必须选满有效数量,或最多选择该数量
  • Allow Skip(布尔):关闭;是否允许不选任何内容直接确认

实际最大数量不会超过候选数,有候选时也不会低于一个。UpTo 在关闭跳过时仍至少要选一个;如果 presenter 不存在或候选集合为空,即使关闭 Allow Skip 也会走 Skipped

当前 Count 输入

节点虽然显示 Count 数据输入,Choice 目前仍会直接读取 Inspector 字段,在执行器接入端口值之前请直接设置节点上的 Count

用于选择卡牌的 Choice 节点

本页总览