概览
GCS 是一个面向 Unity 的卡牌肉鸽战斗框架,覆盖从内容创作到运行时的完整链路:基于 ScriptableObject 的 Workbench 模式用于创作卡牌与战斗内容,内置 FlowGraph 可视化流图用于构建机制,通过 GCSApi 接入和扩展运行时。
GCS 能够支撑一款完整卡牌肉鸽游戏的战斗层,而不只是做几张原型卡。类似杀戮尖塔、月圆之夜这类作品的战斗机制,可以通过内置 Workbench 和 FlowGraph 系统配置出来,不需要为每张卡单独写代码。想了解整体全貌,请从这一页开始。
GameCardSystem(GCS)是 TinyGiants 为 Unity 打造的可视化卡牌肉鸽框架。Workbench 提供六种 ScriptableObject 创作模式,覆盖卡牌、卡组、玩家单位、敌人、状态与遭遇战。FlowGraph 在这些内容之上定义卡牌效果、状态规则、敌人意图与战斗机制,因此做卡不需要为每张新卡编写独立 C# 类。整套框架遵循同一条设计原则:内容由 ScriptableObject 承载,行为由内嵌在内容中的流图描述,代码只在项目需要更深层定制时介入。

上图来自随包附带的 demo 内容。Demo 包含 12 个可玩场景、80 张卡牌、16 个卡组、12 个玩家单位、16 个敌人、30 种状态和 8 个意图图标。它既是首次体验,也是一套参考实现:需要确认成品卡牌、状态、敌人或遭遇战该怎么配置时,打开对应资产对照即可。
工具窗口
四个编辑器界面覆盖从设置、内容编辑、行为连线到 Play Mode 检查的完整流程。
| 窗口 | 打开位置 | 职责 |
|---|---|---|
| Game Card System | Tools/TinyGiants/GCS/Game Card System | 初始化场景、检查环境支持、打开工具,并跳转到 demo 或自定义目录。 |
| Game Card Editor | Tools/TinyGiants/GCS/Game Card Editor | 六模式 Workbench,整套卡牌肉鸽战斗内容都在这里创作和配置。 |
| Game Card Monitor | Tools/TinyGiants/GCS/Game Card Monitor | Play Mode 实时检查器,查看战斗状态、牌堆、单位、阶段、动画门、流图执行和事件。 |
| FlowGraph 编辑器 | 任意 Behavior 字段上的 Edit FlowGraph | 卡牌、状态、敌人行为和可复用组流图的节点编辑器。 |
Game Card System
这个面板是设置与导航窗口。新场景从这里开始:Initialize System 会创建可运行战斗所需的场景对象,注册预设数据库,并打开进入 Editor 和 Monitor 的入口。

Game Card Editor
Workbench 是可视化创作中枢。整个卡牌肉鸽战斗内容模型都在这里创建:卡牌、卡组、玩家单位、敌人、状态与遭遇战。左侧选择内容,中间编辑字段,右侧实时预览结果。

内容模型
GCS 内容由一组可创作的 ScriptableObject 构成。数据库负责把这些资产注册为活动内容,供 Workbench 和运行时共同使用。
| 内容 | 作者能控制什么 |
|---|---|
| 卡牌 | 费用、类型、稀有度、目标模式、美术、文本、标签、关键词和行为流图。 |
| 卡组 | 带副本数量的卡牌池,用于初始卡组和奖励卡组。 |
| 玩家单位 | HP、能量、初始卡组、prefab、图标和职业标签。 |
| 敌人 | HP 范围、层级、prefab、意图行为和敌人行为流图。 |
| 状态 | Buff/Debuff 身份、堆叠规则、衰减规则、图标和状态行为流图。 |
| 遭遇战 | 一整场战斗:玩家单位、敌人阵容、奖励卡组和战斗规则。 |
| 数据库 | 让卡牌、卡组、单位、状态和遭遇战成为活动内容的内容库。 |
卡牌是主要创作对象。预设内容包含 80 张卡牌,覆盖 5 个大类和 4 个稀有度,展示攻击、技能、爆发、支援、诅咒、费用变化、多段攻击、状态施加、卡牌生成和牌堆操作等机制。

玩家单位定义玩家控制的角色:HP、能量显示、初始卡组、职业标签、prefab 和预览美术。Demo 包含战士、法师、猎人、牧师四条职业线。

敌人定义战斗另一侧。随包 16 个敌人覆盖普通、精英、Boss 和召唤物,由意图行为流图驱动,而不是硬编码 AI。

状态用于表达增益、减益、计数器和规则修改。随包 30 种状态覆盖持续伤害、护盾、力量/敏捷式数值变化、控制状态、反伤、再生,以及 hook 驱动的规则修改。

Game Card Monitor
Monitor 是实时战斗检查器。它显示当前战斗快照、牌堆、单位、阶段历史、动画门持有者、流图执行记录和已触发事件。当卡牌行为与预期不一致时,这里能看到运行时实际做了什么。

FlowGraph
FlowGraph 是行为创作层。GCS 使用三大类功能性行为流图:卡牌行为、状态行为、敌人意图行为。除此之外,它还支持可复用组流图,可以把任意数量的节点组合成子图,并支持多层嵌套。

内置节点集包含 140+ 节点,覆盖入口、动作、选择器、运算符、流程控制、意图模式、hook、事件和表现层。换成卡牌游戏语言,它能用可视化方式表达完整 deckbuilder 常见机制:
| 机制族 | GCS 可视化能表达的例子 |
|---|---|
| 伤害与防御 | 单体伤害、群体伤害、多段攻击、获得/失去护甲、穿甲、击杀、复活、延迟伤害。 |
| 卡牌与牌堆 | 抽牌、弃牌、消耗、保留式流程、洗牌、跨牌堆移动、生成卡、变形卡、升级卡、移除卡。 |
| 费用与能量 | 获得/消耗能量、临时费用变化、单卡费用规则、每回合能量 hook、可打出判断 hook。 |
| 状态系统 | 中毒/燃烧式 tick、力量/敏捷式数值变化、护盾、反伤、再生、控制状态、堆叠上限、层数衰减。 |
| 条件逻辑 | HP 阈值、状态检查、卡牌/牌堆检查、变量、事件参数、数学、比较、分支、开关、过滤、排序。 |
| 随机与选择 | 随机目标、随机卡牌、加权敌人模式、玩家选择分支、生成集合、洗乱集合。 |
| 敌人行为 | 顺序意图、加权随机意图、HP 阶段切换、每场一次技能、每 N 回合技能、召唤单位。 |
| 反应与 hook | 修改造成/受到的伤害、护甲、治疗、状态施加、抽牌数量、手牌上限、卡牌费用和可打出状态。 |
| 事件与集成 | 发送内部事件、监听自定义事件,并在安装 GES 时桥接 GameEventSystem。 |
| 表现层 | VFX、SFX、漂字、单位滑动、闪烁、镜头震动、动画等待门和视觉反馈块。 |
运行时与 API
运行时由 GameCardManager 持有活动数据库并启动战斗。战斗先初始化一次,然后循环经过玩家回合开始、玩家阶段、玩家回合结束和敌人阶段,直到胜利或失败。卡牌在抽牌堆、手牌、弃牌堆和消耗堆之间流转;整局运行的 master deck 会在战斗和奖励之间持续存在。
GCS 共提供 147 个运行时 API,统一通过 GCSApi 调用。这些 API 覆盖战斗控制、实时状态查询、战斗数据修改、内容检索、运行卡组管理、事件订阅和扩展注册表。
| 接口面 | 成员数 | 能做什么 |
|---|---|---|
| 管理器与战斗生命周期 | 13 | 检查就绪状态、开始或释放战斗、出牌、结束回合和处理奖励。 |
| 实时战斗状态与查询 | 31 | 读取阶段、单位、HP、护甲、意图、牌堆、卡牌费用、状态和格式化描述。 |
| 战斗修改 | 24 | 造成伤害、修改 HP/护甲/能量、抽牌和移动卡牌、施加状态、召唤敌人、存取战斗变量。 |
| 内容发现与运行卡组 | 24 | 枚举活动数据库和已创作内容、按 GUID 查找资产、管理跨战斗保留的主卡组。 |
| 事件 | 44 | 订阅通用事件,或使用覆盖回合、卡牌、伤害、护甲、能量、状态、牌堆、奖励、选择和阶段的类型化快捷入口。 |
| 扩展注册表 | 4 | 发现 FlowGraph 节点类型、卡牌类型、卡牌标签和描述 token。 |
using TinyGiants.GCS.Runtime;
GCSApi.StartBattle(encounter);
bool played = GCSApi.TryPlayCard(card, target);
GCSApi.EndPlayerTurn();
GCSApi 参考列出了所有 API 的签名、参数、返回值和运行时条件。
环境要求
GCS 支持 Unity 2021.3 或更新版本,并兼容 Unity 6。Demo 内容使用同一套资产同时支持 Built-in Render Pipeline 和 URP。运行时没有第三方依赖。
可选 GES 桥接
当项目中存在 TinyGiants GameEventSystem 时,GCS 可以桥接到 GES。该桥接是可选功能;未检测到 GES runtime 时保持不启用。需要让项目级事件架构发送或监听 GCS 战斗事件时再使用它。详见 GES 集成。