跳到主要内容

Flow、Operator、Intent 与 Event 节点

GCS · Built-In Node Library

Flow 节点决定执行流向。Operator 节点计算、比较、过滤和选取值。Intent 模式、事件触发和 Group 补齐这一套。

面向在入口和最终 Action 之间搭建逻辑的图作者。

本页覆盖 Add Node 菜单的 FlowOperatorIntentEventGroup 五个组。它们放在一起,是因为这些节点都不直接改变战斗状态。它们只负责路由执行或转换数值,并把结果交给 Action 节点。

Rapid Fire 在一张小图里同时使用了两类节点。Loop 是 Flow 节点:让循环体运行四次。Random Elements 是 Operator:每一轮从 All Enemies 集合里挑一个敌人,作为目标传给 Deal Damage

Rapid Fire 的图:Loop 流程节点跑四轮,Random Elements 运算符从 All Enemies 中为每轮挑选目标


Flow 节点

节点用途输入与设置输出常见搭配何时避免
Sequence按顺序运行多个控制输出OutputsStep0Step1,按数量递增多段式卡牌效果后面的步骤依赖条件;用 BranchSwitch
Branch走 True 或 False 路径ConditionTrueFalseConditionLogic、Hook需要两个以上的结果;用 Switch
Switch按整数或字符串 case 路由KindCaseValues、输入 On每个 case 一个输出,外加 Default卡牌类型、队伍、意图、回合数是/否条件就够了;用 Branch
Gate仅在允许时继续AllowOut可选效果、守卫条件需要单独的 false 路径行为;用 Branch
Loop固定次数运行循环体CountBodyDoneIndex重复伤害、重复抽牌、缩放效果想对集合的每个元素跑一遍;用 Foreach
Foreach对集合的每个元素运行一次Kind、输入 CollectionBodyDoneIndexElement(当前元素)逐目标表现、逐卡处理集合型动作一步就能做完同样的事
While条件为 true 时持续运行ConditionBodyDone有明确停止条件的少见脚本逻辑次数已知;用 Loop
Wait延迟表现流程Mode(Seconds 或 Animation)、SecondsAnimationIdOutVFX 时机、动画节拍玩法状态必须等一个可靠的异步结果
Delayed Trigger把行为安排到之后的回合阶段DelayTurnsTickPhaseCancelOnSourceDeathBodyDone延迟状态效果、倒计时攻击效果就该在当前执行路径里发生
Choice让玩家从集合中选择KindPromptCountModeAllowSkipOnChosenSkipped抓取、选牌、选目标机制选择可以自动决定

数字与布尔 Operator

节点用途输入与设置输出常见搭配何时避免
Math Binary组合两个数字KindABOp(Add/Sub/Mul/Div/Mod/Min/Max/Pow)Result伤害缩放、费用变化、Hook 写入只是清理一个数字;用 Math UnaryClamp
Math Unary变换一个数字KindAOp(Neg/Abs/Sign/Sqrt/Floor/Ceil/Round)Result取整、绝对值、符号涉及两个输入;用 Math Binary
Clamp把数字限制在最小值和最大值之间KindValueMinMaxResult防止负伤害、给缩放封顶值本来就该超出范围
Condition比较两个值ABOp(Greater/GreaterEqual/Less/LessEqual/Equal/NotEqual/In)ResultBranchGate、Hook 规则比较的是对象身份;用 Ref Equal
Logic组合布尔值ABOp(And/Or/Xor/Not)Result复合分支规则一个 Condition 已经能表达规则
Ref Equal检查两个引用是否为同一个对象ABOp(Equal 或 NotEqual)Result"是不是这张卡/这个单位/这个状态实例"的检查比较的是文本、数字、标签或分类;用 Condition
Convert把值转换成 Int、Float、Bool 或 StringAToResult事件参数、文本与数字之间的桥接来源已经输出需要的类型
Select按条件在两个值中二选一ConditionIfTrueIfFalseKindResult内联兜底值、Hook 计算不同路径需要不同副作用;用 Branch
Constant提供固定值,或数据库支持的下拉选项Kind、值字段、可选实体字段Result复用的常量、下拉式卡牌/状态/标签值值直接写在消费节点的字段上更清楚
Random产生随机值KindMinMaxProbabilityResult概率分支、随机缩放要从集合里随机选元素;用 Random Elements

集合 Operator

节点用途输入与设置输出常见搭配何时避免
Count统计单位、卡牌或状态集合Kind、输入 CollectionResult连击缩放、手牌数检查只关心是否为空;用 Is Empty
Is Empty检查集合是否为空Kind、输入 CollectionResultBranch、兜底效果需要具体数量
Filter保留符合可见条件的条目Kind、单位/卡牌/状态各自的过滤字段ResultAll EnemiesCard Piles、状态集合已有更精确的来源可以直接用
Contains检查集合是否包含特定条目KindCollectionValueResult守卫、成员判断比较的是标签这类分类;用 ConditionFilter
Take保留顶部或底部 N 个条目KindCountFromResult有序牌堆、已排序集合想要随机选取;用 Random Elements
Pick Element取第一个、最后一个或指定下标的元素KindByIndex被选中的元素过滤后的单目标动作动作应该作用于每个元素
Random Elements不放回地随机选取条目KindCount、输入 CollectionResult随机目标卡或敌人要的是加权敌人意图;用 Weighted Random Pattern
Shuffle打乱集合顺序Kind、输入 CollectionResult从临时列表随机抽取指的是运行时抽牌堆;用 Shuffle Draw Pile
Sort排序集合Kind、单位/卡牌/状态排序字段、OrderResult最低 HP 目标、最高费用卡来源顺序本身有意义
Exclude从一个集合中剔除另一个集合的条目Kind、源集合、剔除集合Result"除目标外的所有敌人"效果普通 Filter 就能表达规则
Merge Collections合并两个集合Kind、两个集合输入Result多来源目标集必须去重;合并后再过滤或剔除
Make Collection用单独的槽位拼一个集合KindSlotCount、槽位输入Result手工挑选的目标集某个选择器已经返回了集合

Filter 的字段是面向玩家的条件,不是代码。单位过滤覆盖队伍、标签、层级、状态、HP 高于或低于某值、是否存活。卡牌过滤覆盖类型、稀有度、关键字、标签、费用高于或低于某值。状态过滤覆盖类型和标签。


Intent 节点

Intent 节点只在敌人图里有意义。模式节点决定敌人预告哪一种行动;每个 Leaf Intent 挂着预览图标和敌人回合实际执行的行为。

节点用途输入与设置输出常见搭配何时避免
Leaf Intent声明一个预览意图并运行它的行为IntentOutIntentTarget顺序、阈值或随机模式节点需要在子分支之间做选择;用模式节点
Sequence Pattern按固定顺序选择意图分支RepeatCounts各步骤分支行动可预测的敌人阶段型敌人;用 HP Threshold Pattern
HP Threshold Pattern按当前 HP 百分比选择分支Thresholds阈值分支加默认分支Boss 阶段切换行为应该随机
Weighted Random Pattern按权重选择分支Weights加权分支行动难以预测的敌人套路必须可读且固定
Once Per BattleBody 只运行一次,之后始终走 DoneBodyDone一次性 Boss 招式应该按节奏重复;用 Every N Turns
Every N Turns每 N 回合运行一次 BodyNBodyDone周期性敌人行动应该只触发一次;用 Once Per Battle

demo 敌人 Mire Reaper 把这套模式词汇装进了同一张图。On Enemy Behavior Start 接入一个 HP Threshold Pattern,HP 跌破阈值后敌人切换到另一套打法。每套打法是一个 Weighted Random Pattern,在多个 Leaf Intent 之间掷骰,每个叶子再串上这手预告招式要执行的 Action 和 FX 节点:

Mire Reaper 的敌人图:HP Threshold Pattern 在多个 Weighted Random Pattern 之间切换,每个 Leaf Intent 串着自己的动作与效果节点


Event 与 Group 节点

节点用途输入与设置输出常见搭配何时避免
Raise Internal Event发送带可选参数的命名 GCS 事件EventName、参数绑定On Internal EventEvent Arg直接拉一根控制线更简单
Raise GES Event发送 Game Event System 事件GES 事件 GUID、参数的类型/来源/值、发送者的类型/来源/值On GES Event、使用 GES 的项目没有安装 GES 桥
Group把可复用图逻辑包在暴露端口后面GroupNameBodyExposedParamsGroup 暴露的端口重复出现的图片段逻辑只跑一次,分组反而藏住了它

可读性规则

图被阅读的次数通常多于被编辑的次数。把设计意图对应到标准结构:

图想说的是……优先用
"如果这是真的,就做这个。"ConditionBranch
"对每个选中的目标做这件事。"集合来源 → Foreach
"从几个命名 case 里选一个。"Switch
"先算出一个数字,再应用它。"数学节点 → Action 的输入端口
"改掉某个 Hook 的值。"Hook 入口 → Operator → Write Hook
"敌人预告一手行动。"Intent 模式 → Leaf Intent