Get 节点
GCS · Built-In Node Library
Get 节点只读战斗状态,从不改变它。19 个内置节点为图里每个数据端口提供单位、卡牌、状态、数字和集合。
面向正在连接目标、条件和数值缩放的图作者。Get 节点用于回答当前战斗状态:谁在行动、目标的状态是什么、某个牌堆里有哪些卡、事件携带了哪些参数。它们本身从不改变战斗。它们的输出连接到 Action、Operator 和 Flow 节点的数据端口。
demo 卡牌 Rapid Fire 展示了这种分工。All Enemies 是其中的 Get 节点:它把完整敌人列表传给 Random Elements,后者在循环的每一轮里挑出 Deal Damage 要攻击的目标。

菜单组与基类
这些节点在 Add Node 菜单中属于 Get。扩展基类 SourceNode 和 SelectorNode 只在你用 C# 写自定义节点时才重要。
当前战斗上下文
| 节点 | 用途 | 输入与设置 | 输出 | 常见搭配 | 何时避免 |
|---|---|---|---|---|---|
| Active Team | 读取当前正在行动的队伍 | 无 | Team | Switch、Condition、按队伍区分的规则 | 需要单位引用;用 Active Unit |
| Active Unit | 读取当前正在行动的单位 | 无 | Unit | Unit Info、Deal Damage、Play VFX | 明确要的是图的拥有者;用 Self Unit |
| Active Turn | 读取当前战斗回合数 | 无 | Turn | Condition、Every N Turns、随回合成长的效果 | 需要每个单位各自的回合计数 |
| Self Unit | 读取拥有这张图的单位 | 无 | Unit | 自我增益、自伤、状态逻辑 | 行动单位可能不是拥有者;用 Active Unit |
| Opponent Unit | 在简单一对一上下文中读取对面单位 | 无 | Unit | 基础攻击卡、敌人行动 | 有多个敌人或目标规则很重要;用选择器或卡牌自己的目标 |
| Player Energy | 读取当前能量和每回合能量 | 无 | Current、PerTurn | 费用检查、随能量缩放的卡 | 要改变能量;用 Change Energy |
单位与状态检查
| 节点 | 用途 | 输入与设置 | 输出 | 常见搭配 | 何时避免 |
|---|---|---|---|---|---|
| Unit Info | 读取一个单位的可见信息 | Unit、UnitSource | Team、HP、MaxHP、HPPercent、Armor、Statuses、Intent、IntentAmount、Alive、Attacked、Tier、Tags | Condition、Filter、Branch、敌人阶段规则 | 要改变单位;用 Action 节点 |
| Unit Status Stacks | 读取单位身上某一个状态的层数 | Unit、UnitSource、Status | Stacks | Condition、消耗层数的配方、Hook 图 | 需要单位身上的全部状态;用 Unit Info.Statuses |
| Status Info | 读取一个状态的信息 | Status | Stacks、Type、Tags | Filter、Condition、状态 UI 逻辑 | 要增减层数;用 Change Status |
demo 状态 Poison 的核心逻辑就来自这一节:它的每回合伤害等于自身层数,接法是 Status Info.Stacks 连进 Deal Damage.Amount。层数叠得越高,毒伤越大,其他节点不需要额外逻辑。
卡牌检查
| 节点 | 用途 | 输入与设置 | 输出 | 常见搭配 | 何时避免 |
|---|---|---|---|---|---|
| This Card | 读取这张图正在为之运行的卡 | 无 | Card | Card Info、Replay Card、自我变形卡 | 图不是由卡牌拥有或触发的 |
| Card Info | 读取一张卡的可见信息 | Card、CardSource | Cost、Type、Rarity、Tags、Keywords | Condition、Filter、Card Cost Hook、卡牌联动 | 要移动、升级或移除这张卡 |
| Card Piles | 从运行时牌堆读取卡牌 | Pile | Cards | Filter、Take、Move Cards、Upgrade Cards | 要的是战斗外的卡组定义;用 Deck Cards |
| Deck Cards | 从一个卡组资产读取卡牌 | Deck | Cards | 开局规则、卡组分析、奖励逻辑 | 要的是当前运行时抽牌堆或手牌 |
| Cards Played This Turn | 读取本回合打出的卡 | 无 | Cards | 连击计数、卡牌类型联动 | 需要整场战斗的历史 |
| Cards Drawn This Turn | 读取本回合抽到的卡 | 无 | Cards | 抽牌联动、抽牌数加成 | 需要当前手牌内容 |
变量与事件数据
| 节点 | 用途 | 输入与设置 | 输出 | 常见搭配 | 何时避免 |
|---|---|---|---|---|---|
| Variable | 读取一个命名变量 | Name、Kind、BattleScope | Result | Set Variable、Branch、随状态成长的效果 | 前一个节点已经产出了这个值;直接连线 |
| Event Arg | 从内部事件或 GES 事件读取命名参数 | ArgName | Result | On Internal Event、On GES Event、事件驱动的图 | 图不是由事件入口启动的 |
集合
| 节点 | 用途 | 输入与设置 | 输出 | 常见搭配 | 何时避免 |
|---|---|---|---|---|---|
| All Enemies | 读取所有存活的敌方单位 | 无 | Units | AoE 卡、Filter、Foreach | 应该包含友方单位;用 All Units |
| All Units | 读取场上所有单位 | 无 | Units | 全局效果、全场过滤 | 只应影响其中一方 |
Filter、Take、Random Elements、Sort、Pick Element 这类集合塑形节点列在 Operator 页,因为它们转换值,而不是读取某个特定的战斗来源。
选择来源
把设计在问的问题,对上能直接回答它的节点:
| 设计的问题 | 来源 |
|---|---|
| "这张卡的类型是 Attack 吗?" | This Card → Card Info.Type |
| "目标低于 50% HP 吗?" | 目标单位 → Unit Info.HPPercent → Condition |
| "哪些敌人带有 Burn?" | All Enemies → 按状态 Filter |
| "玩家能量够吗?" | Player Energy.Current → Condition |
| "这场战斗里它触发过吗?" | 打开 BattleScope 的 Variable |
| "那个事件发给我什么?" | Event Arg |
简单的图只用直接来源。只有来源需要缩窄、排序、随机化、计数或转换时,才加选择器和 Operator 节点。
常见错误
| 错误 | 更好的做法 |
|---|---|
卡应该打它选中的目标,却用了 Active Unit | 用卡牌自己的目标,或入口的 target 输出 |
设计说的是构筑卡组数据,却读了 Card Piles | 对卡组资产用 Deck Cards |
从 All Units 出发,事后再想办法撤销打到友方的部分 | 从 All Enemies 出发,或先按队伍过滤 |
| 把每个来源值都存进变量 | 除非这个值要跨入口复用,否则直接连线 |
在没有事件启动的图里读 Event Arg | 用普通数据线传值,或从 On Internal Event 启动 |