Flow 节点
控制连接节点何时执行以及按什么顺序执行
Flow 节点负责控制执行路径,可用来分支、重复、等待、排序或暂停流程;需要计算数值时,应使用 Operator 节点Flow 节点负责控制执行路径,可用来分支、重复、等待、排序或暂停流程;需要计算数值时,应使用 Operator 节点
节点用法
Sequence
从上到下依次执行各个步骤。一个入口需要按固定顺序启动多段独立逻辑时使用,例如先造成伤害,再修改状态,最后播放表现效果
输入端口
In(控制):开始执行 Sequence
输出端口
Step0…StepN(控制):按编号顺序各执行一次,端口数量由Outputs决定
参数
Outputs(整数):2;顺序步骤数量,修改后会重建可见输出端口
步骤会按编号顺序启动,完全同步的路径会在下一步开始前执行完;路径遇到 Wait 或 Choice 后会在该节点返回,后面的步骤可能先于延迟或选择分支的继续逻辑开始。如果多个路径只能选一个,应使用 Branch 或 Switch
Outputs 设为 0 或负数时,没有任何 Step 路径会执行
Branch
根据布尔值在两条路径中选择一条,常见连接是 Condition.Result → Branch.Condition
输入端口
In(控制):触发本次判断Condition(布尔):true走True,false或未连接时走False
输出端口
True(控制):条件为 true 时执行False(控制):条件为 false 时执行
参数: 无
每次只会执行一个输出;如果 false 时什么都不做,可以不连接 False
Switch
用整数或字符串匹配多个 case,适合卡牌类型、意图名称、回合模式等超过两种结果的判断
输入端口
In(控制):开始匹配 caseOn(整数或字符串):与Case Values比较,类型跟随Kind
输出端口
Case 1…Case N(控制):每个值对应一个界面端口,顺序一致,序列化名称为Case0…CaseN-1Default(控制):没有 case 匹配时执行,连接On后和 case 输出一起显示
参数
Kind(内部字段)(Int/String):推断前为Int;根据连接到On的数据类型自动设置,编辑器中没有单独的选择器Cases(Case Values)(整数或字符串列表):连接On前为空;UI 数量包含Default,其余每一行保存一个 case 值并创建一个可见 case 输出
字符串采用区分大小写的精确匹配。case 从上到下检查,重复值只会命中第一项;Int 模式下无法解析为整数的条目会被跳过
null 字符串输入按空字符串处理,因此可以命中空字符串 case
编辑器需要先连接 On 才能配置 case 或看到这些控制输出,可见的 Cases 数量包含最后的 Default,因此 Cases = 3 会创建两个可编辑值,以及 Case 1、Case 2 和 Default 三个界面输出
Gate
只有布尔条件为 true 时才让执行继续,适合不需要单独处理 false 分支的简洁前置条件
输入端口
In(控制):检查 GateAllow(布尔):true 时放行,false 时终止当前路径
输出端口
Out(控制):仅在Allow为 true 时执行
参数: 无
未连接的 Allow 为 false,执行会停在这里;两个结果都要执行不同逻辑时应使用 Branch
Loop
按固定次数重复同一段逻辑,需要按轮次缩放数值、选择元素或显示编号时可以使用从 0 开始的 Index
输入端口
In(控制):开始循环Count(整数):Body的执行次数,未连接时使用同名字段
输出端口
Body(控制):每轮执行一次Done(控制):所有轮次结束后执行,次数为零或负数时也会直接执行Index(整数):当前轮次,从0开始
参数
Count(整数):1;Count端口未连接时的备用值
每轮 Body 的同步部分执行完成后才进入下一轮;如果路径遇到 Wait 或 Choice,下一轮会在异步节点返回后开始,不会等待它之后的回调。已有集合并且需要拿到当前元素时,应使用 Foreach
每轮都会覆盖同一份执行上下文中的 Index 结果,如果路径在读取 Index 前进入等待,回调恢复后可能读到后续轮次甚至最后一轮的值,应在异步边界之前消费或保存它
Foreach
按集合原有顺序逐个处理单位、卡牌或状态,并提供当前元素和从 0 开始的索引
输入端口
In(控制):开始遍历Collection(单位、卡牌或状态集合):待遍历集合,类型跟随Kind
输出端口
Body(控制):每个元素执行一次Done(控制):最后一个元素结束后执行,集合为空或 null 时直接执行Element(单位、卡牌或状态引用):当前元素,类型跟随KindIndex(整数):当前元素索引,从0开始
参数
Kind(内部字段)(Unit/Card/Status):推断前为Unit;根据连接到Collection的集合自动设置,不能直接编辑
应把 Element 连接给 Body 内的 Action;如果连接整个集合,同一个集合动作会在每轮重复执行
集合中的 null 元素也会占用一轮,此时 Body 仍会执行,Element 为 null
和 Loop 一样,路径遇到 Wait 或 Choice 不会暂停遍历,下一个元素可能先于异步回调恢复执行
Foreach 直接遍历原集合引用,不会创建快照;Body 同步增加、移除或移动元素会改变 Count 和索引,可能跳过元素或处理后来加入的元素。每轮还会覆盖共享的 Element 和 Index,因此应在进入 Wait 或 Choice 前消费或保存它们
While
在布尔条件保持 true 时反复执行 Body,仅适用于 Body 会改变条件所读取数据的场景
输入端口
In(控制):开始检查条件Condition(布尔):每轮开始前重新读取
输出端口
Body(控制):条件为 true 时执行Done(控制):条件变为 false 后执行
参数: 无
While 必须同步变为 false如果 Body 返回前没有让 Condition 变为 false,外层循环会继续执行并可能卡死游戏;Body 未连接且条件为 true 时会立刻进入死循环,把 Wait 或 Choice 放进循环也不能安全让出执行,因为这些节点返回后 While 仍会继续。下一轮属于之后帧或回合时,应使用 Loop、Foreach 或 Delayed Trigger
Wait
暂停当前控制路径后再继续,短暂的表现节奏使用 Seconds,需要由其他表现代码明确释放时使用 Animation
输入端口
In(控制):开始等待Seconds(浮点数):Seconds模式显示,连接值会覆盖 Inspector 时长AnimationId(字符串):Animation模式显示,连接值会覆盖 Inspector ID
输出端口
Out(控制):等待结束后执行,无法建立等待任务时立即执行
参数
Mode(Seconds/Animation):Seconds;决定显示的输入端口和等待方式Seconds(浮点数):0.5;Seconds模式的等待时长Animation Id(字符串):空;Animation模式等待的 Gate reason
Seconds 小于等于 0 时立即继续。Animation 不会自动监听 Animator 的 clip 或 trigger,表现层必须在节点执行前已经 Acquire 同名的 AnimationGate reason;reason 没有被持有时会立即继续,被持有时会等到释放,或在五秒安全超时后继续,空 Animation Id 会使用 Flow Wait
Delayed Trigger
把一段逻辑登记到之后的战斗阶段执行,同时让当前图从 Done 继续,适合倒计时效果,不适合短暂的画面停顿
输入端口
In(控制):尝试登记延迟逻辑
输出端口
Body(控制):保存为未来执行入口,本次不会立即运行Done(控制):登记后立即继续
参数
Delay Turns(整数):1;经过多少回合后允许触发Fire At(Tick Phase)(PlayerTurnEnd/PlayerTurnStart/EnemyPhaseEnd):PlayerTurnStart;推进并触发计时的战斗阶段Cancel If Source Dies(Cancel On Source Death)(布尔):关闭;来源单位死亡后取消待执行逻辑
只有 Body 已连接且 Delay Turns 大于零时才会登记延迟逻辑。设置为零或负数时仍然只走 Done,不会改成立即执行 Body

Choice
把单位、卡牌或状态集合交给运行时选择界面,再根据玩家确认或跳过进入对应路径,用于需要玩家作出选择的效果
输入端口
In(控制):打开选择界面Options(单位、卡牌或状态集合):候选集合,null 元素会被忽略,类型跟随KindCount(整数):编辑器已经声明该端口,但当前执行器不会读取连接值
输出端口
OnChosen(控制):玩家确认有效选择后执行Skipped(控制):玩家跳过,或当前没有 presenter / 候选项时执行Chosen(单位、卡牌或状态集合):玩家确认的结果,类型跟随Kind
参数
Kind(内部字段)(Unit/Card/Status):推断前为Card;根据连接到Options的集合自动设置,不能直接编辑Prompt(字符串):空;选择界面显示的提示Count(整数):1;当前运行时实际使用的最多选择数量Mode(Exactly/UpTo):Exactly;必须选满有效数量,或最多选择该数量Allow Skip(布尔):关闭;是否允许不选任何内容直接确认
实际最大数量不会超过候选数,有候选时也不会低于一个。UpTo 在关闭跳过时仍至少要选一个;如果 presenter 不存在或候选集合为空,即使关闭 Allow Skip 也会走 Skipped
Count 输入节点虽然显示 Count 数据输入,Choice 目前仍会直接读取 Inspector 字段,在执行器接入端口值之前请直接设置节点上的 Count
