跳到主要内容

Operator 节点

GCS · 内置节点库

处理数值和集合,但不修改战斗状态

Operator 节点接收 Get 节点或其他节点输出的数据,完成计算或缩小集合后,再把结果连接到需要该数据的节点

Operator 节点接收 Get 节点或其他节点输出的数据,完成计算或缩小集合后,再把结果连接到需要该数据的节点


节点用法

Math Binary

对两个数执行四则运算、取较小值、取较大值或幂运算,常用于先算出伤害、费用或 Hook 结果,再把数值交给后续节点

输入端口

  • A(整数或浮点数):左操作数,未连接时使用字段值
  • B(整数或浮点数):右操作数,未连接时使用字段值

输出端口

  • Result(整数或浮点数):运算结果,类型跟随 Kind

参数

  • Number TypeKindInt / Float):Int;决定输入与结果类型
  • A(数值):0A 未连接时的备用值
  • B(数值):0B 未连接时的备用值
  • OperationOpAddSubMulDivModMinMaxPow):Add;对 AB 执行的运算

除数或取模数为零时返回 0;整数除法会舍去余数,整数 Pow 会把浮点幂结果四舍五入为整数

用于整数加法的 Math Binary 节点

Math Unary

只处理一个数值,适合取负、绝对值、符号、平方根或取整

输入端口

  • A(整数或浮点数):待处理数值,未连接时使用字段值

输出端口

  • Result(整数或浮点数):Int 模式始终输出整数,Float 模式的 SignFloorCeilRound 输出整数,其余输出浮点数

参数

  • Number TypeKindInt / Float):Int;选择数值模式
  • A(数值):0;输入端口未连接时的备用值
  • OperationOpNegAbsSignSqrtFloorCeilRound):Neg;对 A 执行的处理

Sqrt 会先把负数限制为零;Int 模式中的 FloorCeilRound 不会再改变整数,Float 模式中的 SignFloorCeilRound 会显示整数结果端口

用于取负数的 Math Unary 节点

Clamp

把数值限制在包含上下界的范围内,常用于限制费用、百分比、倍率或 Hook 修改结果

输入端口

  • Value(整数或浮点数):待限制数值
  • Min(整数或浮点数):包含在范围内的下限
  • Max(整数或浮点数):包含在范围内的上限

输出端口

  • Result(整数或浮点数):限制后的结果,类型跟随 Kind

参数

  • Number TypeKindInt / Float):Int;决定所有端口类型
  • Value(数值):0Value 未连接时的备用值
  • Min(数值):0Min 未连接时的备用值
  • Max(数值):1Max 未连接时的备用值

范围由其他效果动态决定时再连接上下限,否则直接使用 Inspector 值即可

Min 应小于等于 Max,节点会直接把数值交给 Mathf.Clamp,不会交换或纠正反向边界

带有 Value、Min 和 Max 输入的 Clamp 节点

Condition

比较两个值并返回布尔结果,可以把 Result 连接到 BranchGateSelect 或 Hook 规则

输入端口

  • A(任意):左侧比较值
  • B(任意):右侧比较值

输出端口

  • Result(布尔):当前比较规则的结果

参数

  • OperationOp>Greater)、GreaterEqual)、<Less)、LessEqual)、=Equal)、NotEqual)、In)):=;编辑器中显示的比较规则

数值比较支持整数、浮点数、布尔值(false 为 0、true 为 1)和数值文本,无法解析的文本按 0 参与比较。数字相等使用 Mathf.Approximately 近似比较,字符串按区分大小写的精确文本比较;任一侧为 null 时,两侧都会按文本比较,因此 null 与空字符串相等,两个未连接输入执行 Equal 也会得到 true,其他类型使用值相等判断。In 会把两侧转为字符串列表,只要存在一个完全相同的项目就返回 true,逗号或分号分隔的文本会拆成多项,两个空列表不会命中

用于相等判断的 Condition 节点

Logic

组合或取反布尔值,例如表达“目标存活并且 HP 低于 50%”这样的复合条件

输入端口

  • A(布尔):第一个条件,未连接时使用字段值
  • B(布尔):AndOrXor 时显示,Not 时隐藏

输出端口

  • Result(布尔):组合或取反后的结果

参数

  • A(布尔):关闭;A 未连接时的备用值
  • B(布尔):关闭;使用第二个条件时的备用值
  • OperationOpAndOrXorNot):And;布尔运算,Not 只读取 A

Xor 仅在两个输入恰好一个为 true 时返回 true

使用 And 的 Logic 节点

Ref Equal

判断两个端口是否指向同一个运行时对象,适合确认“当前集合元素是不是触发这个 Hook 的那张卡”

输入端口

  • A(任意引用):第一个对象引用
  • B(任意引用):第二个对象引用

输出端口

  • Result(布尔):引用身份比较结果

参数

  • OperationOpEqual / NotEqual):Equal;返回是否为同一引用,或返回其反值

它不会比较名称、ID、字段值、标签或集合内容,这些值的比较应使用 Condition

两个输入都未连接时均为 null,因此 Equal 返回 true,NotEqual 返回 false

带有两个引用输入的 Ref Equal 节点

Select

根据条件返回两个候选值中的一个,适合只改变数据、两种结果仍然进入同一个后续节点的情况

输入端口

  • Condition(布尔):true 时选择 IfTrue,否则选择 IfFalse
  • IfTrue(所选类型):条件为 true 时返回
  • IfFalse(所选类型):条件为 false 时返回

输出端口

  • Result(所选类型):被选中的输入值

参数

  • Value TypeKindIntFloatBoolStringUnitCardStatus):Int;决定候选与结果端口类型

两种结果需要执行不同 Action 或表现时,应使用 Branch

Condition 未连接时为 false,被选中的候选输入未连接时,Result 为 null

用于整数值的 Select 节点

Constant

提供固定标量或由数据库字段下拉选择的文本,适合在图里复用同一个字面值,或者给它一个清楚的节点标题

输入端口:

输出端口

  • Value(整数、浮点数、布尔、字符串或字符串列表):类型跟随 Kind,数据库 Tags/Keywords 字段通过 Any 端口输出字符串列表,不输出资产引用

参数

  • Value TypeKindIntFloatBoolStringCardStatusPlayerEnemy):Int;决定值编辑器和输出契约
  • Int Value(整数):0;仅用于 Int
  • Float Value(浮点数):0;仅用于 Float
  • Bool Value(布尔):关闭;仅用于 Bool
  • String Value(字符串):空;用于 String 和数据库单值字段
  • Field(数据库字段):空;CardStatusPlayerEnemy 模式下选择 Type、Rarity、Tier、Tags、Keywords 等字段
  • String Values(字符串列表):空;所选字段为 Tags 或 Keywords 这类多值字段时使用

CardStatusPlayerEnemy 模式虽然提供数据库下拉项,运行时结果仍是选中的字符串或字符串列表,并不是 CardRefStatusRef 或单位引用;Action 需要真实对象时应使用 Get 节点

提供整数值的 Constant 节点

Convert

把标量转换为整数、浮点数、布尔或字符串,只在确实存在类型边界时使用,尽量保持原生端口类型会让行为图更容易阅读

输入端口

  • A(任意标量):待转换的值

输出端口

  • Result(整数、浮点数、布尔或字符串):转换结果,类型跟随 To

参数

  • To TypeToIntFloatBoolString):Float;目标类型

浮点数转整数会四舍五入;无效数值文本会变成 0,布尔会变成 01。字符串非空时为 true,数字非零时为 true,不支持的对象类型会得到目标类型的空值

转换为浮点数的 Convert 节点

Random

生成随机整数、浮点数或布尔值,随机布尔结果可以直接交给 Branch

输入端口

  • Min(整数或浮点数):IntFloat 模式显示,范围下限
  • Max(整数或浮点数):IntFloat 模式显示,范围上限
  • Probability(浮点数):Bool 模式显示,返回 true 的概率

输出端口

  • Result(整数、浮点数或布尔):随机结果,类型跟随 Kind

参数

  • Roll TypeKindIntFloatBool):Int;选择范围模式或概率模式
  • Min(数值):0IntFloat 模式下限备用值
  • Max(数值):1IntFloat 模式上限备用值
  • Probability(浮点数):0.5;布尔概率,通常使用 01

数值范围的两端都可能取到。Bool 模式中,小于等于 0 必定为 false,大于 1 必定为 true;需要从集合中随机选择对象时应使用 Random Elements

用于整数范围的 Random 节点

Count

返回单位、卡牌或状态集合中的元素数量,适合检查手牌数量、计算倍率或判断还剩多少目标

输入端口

  • Collection(单位、卡牌或状态集合):待计数集合,类型跟随 Kind

输出端口

  • Result(整数):元素数量,null 集合返回 0

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据连接的集合类型自动设置,不显示为可编辑参数

节点读取集合保存的长度,因此非空集合中的 null 元素也会计入数量

用于单位集合的 Count 节点

Is Empty

判断集合是否为空,如果只关心有没有元素,它比先用 Count 再和零比较更直观

输入端口

  • Collection(单位、卡牌或状态集合):待检查集合,类型跟随 Kind

输出端口

  • Result(布尔):集合为 null 或元素数为零时返回 true

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据连接的集合类型自动设置,不显示为可编辑参数

只包含一个 null 元素的集合也不算空,本节点只检查集合引用和元素数量

用于单位集合的 Is Empty 节点

Contains

检查集合中是否包含同一个运行时对象,适合在选择或筛选后确认成员关系

输入端口

  • Collection(单位、卡牌或状态集合):待搜索集合
  • Value(单位、卡牌或状态引用):待查找对象,类型跟随 Kind

输出端口

  • Result(布尔):集合中出现同一个对象引用时返回 true

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据 Collection 自动设置,同时改变 Value 的引用类型

这里比较的是引用身份,不是资产名称、GUID、标签或字段值;集合或 Value 为 null 时返回 false

带有集合和目标值输入的 Contains 节点

Filter

从单位、卡牌或状态集合中保留符合条件的元素,通常放在宽泛的 Get 节点与目标 Action、Sort 或 Pick Element 之间

输入端口

  • Collection(单位、卡牌或状态集合):来源集合,类型跟随 Kind

输出端口

  • Result(单位、卡牌或状态集合):按来源顺序保留匹配且非 null 的元素

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据 Collection 自动设置,同时改变可见行内条件和结果类型
  • Filter ByBy Unit(多选:TeamTagsTierHasStatusHPBelowHPAboveAlive):Alive;连接 Unit 集合后显示的单位筛选条件
  • Filter ByBy Card(多选:TypeRarityKeywordsTagsCostBelowCostAbove):Type;连接 Card 集合后显示的卡牌筛选条件
  • Filter ByBy Status(多选:TypeTags):Type;连接 Status 集合后显示的状态筛选条件
  • StatusStatus Id(状态标识):None;HasStatus 条件使用
  • TeamPlayer / Enemy):None;单位 Team 条件使用
  • Tier(敌人层级):None;单位 Tier 条件使用,玩家单位不会匹配
  • Keyword(卡牌关键词):None;卡牌 Keywords 条件使用
  • Tags(字符串列表):空;单位、卡牌或状态的 Tags 条件使用
  • Type(卡牌类型):None;卡牌 Type 条件使用
  • Rarity(卡牌稀有度):None;卡牌 Rarity 条件使用
  • Status TypeBuff / Debuff):Buff;状态 Type 条件使用
  • Cost(整数):0;卡牌费用条件的阈值
  • HP%Percent(浮点数):50;单位 HP 百分比条件的阈值

所有已选条件按 AND 组合;Tags 列表内部只要有一个完全相同的标签就算匹配。HPBelowHPAbove 是严格小于和大于,CostBelow 表示有效费用 ≤ 阈值,CostAbove 表示有效费用 ≥ 阈值。条件列表为空时保留所有有效元素,但某个已启用条件依赖的文本字段为空时,该条件会失败

当前只有 Collection 是数据插口,Status IdTeamPercentCost 和其他筛选条件都只能直接在节点上编辑,不能从其他节点连线输入

用于筛选存活单位的 Filter 节点

Sort

返回重新排序后的集合副本,可以在 Pick ElementTake 之前找出最低 HP 单位、最高费用卡牌或按层数排列的状态

输入端口

  • Collection(单位、卡牌或状态集合):待复制并排序的集合,类型跟随 Kind

输出端口

  • Result(单位、卡牌或状态集合):排序后的新集合,不修改原集合

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据 Collection 自动设置,同时改变可见排序字段和结果类型
  • Sort ByBy UnitHP / Armor):HP;单位排序依据
  • Sort ByBy CardCost):Cost;按有效能量费用排序
  • Sort ByBy StatusStacks):Stacks;按当前图拥有者身上的状态层数排序
  • OrderAscending / Descending):Ascending;升序或降序

状态集合的层数来自当前 host,节点没有额外的目标单位输入

null 元素会保留在结果中,并按排序值 0 参与比较

按单位 HP 升序排列的 Sort 节点

Pick Element

从集合中取出一个元素,配合 Sort 可以选最低或最高值,已有索引时可以使用 AtIndex

输入端口

  • Collection(单位、卡牌或状态集合):待读取集合
  • Index(整数):仅 AtIndex 显示,从 0 开始,未连接时使用字段值

输出端口

  • Element(单位、卡牌或状态引用):选中的元素,集合为空、索引越界或被选槽位本身为 null 时均返回 null

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据 Collection 自动设置,同时改变元素结果类型
  • Pick ByByFirst / Last / AtIndex):First;选择方式
  • Index(整数):0AtIndex 模式下的备用索引

选择第一个元素的 Pick Element 节点

Take

从集合开头或末尾复制最多指定数量的元素,并保留这些元素在原集合中的顺序

输入端口

  • Collection(单位、卡牌或状态集合):来源集合
  • Count(整数):最多保留几个,未连接时使用字段值

输出端口

  • Result(单位、卡牌或状态集合):由所选范围组成的新集合

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据 Collection 自动设置,同时改变结果集合类型
  • Count(整数):1;待选数量的备用值
  • FromTop / Bottom):Top;从集合开头或末尾读取

数量超过集合长度时返回全部元素,数量为零或负数时返回空集合

选中范围内已有的 null 元素会原样保留

从集合顶部选取的 Take 节点

Exclude

从一个集合中移除另一个集合包含的全部对象,适合“除主目标以外的所有敌人”这类目标范围

输入端口

  • Collection(单位、卡牌或状态集合):来源元素
  • Exclude(同类集合):要移除的元素

输出端口

  • Result(单位、卡牌或状态集合):移除后保持来源顺序的新集合

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据 Collection 自动设置,同时应用到两个集合输入和结果

成员判断使用运行时对象身份,null 元素不会进入结果,来源集合为 null 时返回空集合,排除集合为 null 时不移除任何内容

带有来源集合和排除集合的 Exclude 节点

Merge Collections

把两个集合首尾拼接,适合把两个来源的目标交给同一个后续 Action

输入端口

  • A(单位、卡牌或状态集合):放在结果前面
  • B(同类集合):追加在 A 后面

输出端口

  • Result(单位、卡牌或状态集合):新的拼接集合

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据第一个集合输入连接自动设置,同时应用到两个输入和结果

重复项会被保留,同一个对象同时出现在两个输入中时,也会在结果中出现两次

null 输入集合按空集合处理,输入集合内部已有的 null 元素会被保留

带有 A 和 B 输入的 Merge Collections 节点

Make Collection

把逐个连接的引用组成集合,适合目标数量很少且来源明确的场景

输入端口

  • Slot0SlotN(单位、卡牌或状态引用):每个可见槽位接一个元素,null 输入会被跳过

输出端口

  • Result(单位、卡牌或状态集合):按槽位顺序组成的新集合

参数

  • Element TypeKindUnit / Card / Status):Unit;该节点没有来源集合可用于推断,因此需要在这里选择元素类型
  • SlotsSlot Count(整数):2;动态生成的槽位数量

修改 Slot Count 会重建输入端口,非 null 元素保持槽位顺序,同一个引用可以重复出现

运行时会把 Slot Count 的最小值限制为 1

带有三个单位槽位的 Make Collection 节点

Random Elements

从集合中随机选择列表位置,同一个位置不会被重复选择,适合从来源集合中取得随机子集

输入端口

  • Collection(单位、卡牌或状态集合):候选集合
  • Count(整数):需要几个结果,未连接时使用字段值

输出端口

  • Result(单位、卡牌或状态集合):按随机选中顺序排列的子集

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据 Collection 自动设置,同时改变结果集合类型
  • Count(整数):1;待选数量的备用值

结果数量不会超过候选数;集合为 null、为空,或数量小于等于零时返回空集合

非空来源集合中的 null 元素仍属于候选,因此可能以 null 项进入结果

如果同一个对象引用在来源集合中占据多个位置,这些位置是独立候选,同一个对象仍可能在 Result 中出现多次

随机选择一个单位的 Random Elements 节点

Shuffle

返回随机重排后的集合副本,不会修改来源集合或真实战斗牌堆

输入端口

  • Collection(单位、卡牌或状态集合):待复制并重排的元素

输出端口

  • Result(单位、卡牌或状态集合):打乱后的副本,null 输入得到空集合

参数

  • Kind(内部字段)Unit / Card / Status):推断前为 Unit;根据 Collection 自动设置,同时改变结果集合类型

如果要打乱真实抽牌堆并触发对应战斗事件,应使用 Shuffle Draw Pile Action

输入中的 null 元素会和其他元素一起保留并参与重排

用于单位集合的 Shuffle 节点

本页总览