项目结构
分清 GCS 包内容、随包 Demo 与项目自有数据,让包更新、内容创作和正式资产各自保持清晰边界
场景完成初始化后,Project 窗口中会同时出现 GCS 包内容与项目自有内容:Assets/TinyGiants/ 提供运行时、编辑工具和随包 Demo,而在创建自定义数据库时会生成 Assets/TinyGiantsData/ ,用来保存当前游戏的卡牌、单位、状态、卡组与遭遇战
两类内容可以互相引用,但更新方式和维护职责并不相同
先分清包内容与项目内容
GCS 的默认目录边界如下:
📦 Assets/
├── 🏢 TinyGiants/
│ ├── 📁 GameCardSystem/ # GCS 包根目录
│ │ ├── ⚙️ Runtime/ # 运行时引擎、数据模型与公开 API
│ │ ├── 🛠️ Editor/ # Game Card Editor、FlowGraph 与 Monitor
│ │ ├── 🎮 Demo/ # 可运行、可拆解的完整参考项目
│ │ │ ├── 🎨 Content/ # Demo 美术、Prefab、音频与表现资产
│ │ │ ├── 🗄️ Databases/ # 六个预设数据库
│ │ │ ├── ⚔️ Scenes/ # 四个职业的 12 个战斗场景
│ │ │ ├── 💻 Scripts/ # Demo 棋盘、UI、表现与音频脚本
│ │ │ └── 🛠️ Editor/ # 仅服务于 Demo 的编辑器工具
│ │ ├── 🔌 Integrations/GES/ # 可选的 GameEventSystem 集成
│ │ ├── 📘 Docs/ # 包内文档入口
│ │ ├── 📋 Samples~/CustomNodes/ # 自定义节点扩展源码
│ │ │ ├── Templates/ # 七类可复制节点模板
│ │ │ └── Examples/ # 七个完整节点示例
│ │ ├── 📝 Changelog.md # 当前版本的功能记录
│ │ ├── 📖 Readme.txt # 包入口、菜单与支持链接
│ │ └── ⚖️ LICENSE.txt # 授权条款
│ └── 🔧 Shared/ # TinyGiants 共用基础设施
└── 💾 TinyGiantsData/GameCardSystem/ # 项目自有 GCS 数据根目录
├── 🃏 CardDatabases/
├── 🗂️ DeckDatabases/
├── ✨ StatusDatabases/
├── 🗺️ EncounterDatabases/
├── 🦸 PlayerUnits/
└── 👹 EnemyUnits/
Assets/TinyGiants/GameCardSystem/ 随包安装并随版本更新,而Assets/TinyGiantsData/GameCardSystem/ 则由当前项目持有,并在创建第一份对应类型的自定义数据库时逐级生成,这项边界决定了哪些文件应当视为产品包,哪些文件属于游戏本身
GCS 包目录提供什么
| 目录 | 内容 | 什么时候进入 |
|---|---|---|
Runtime/ | ScriptableObject 数据模型、战斗状态机、FlowGraph 执行器、状态系统、事件与 GCSApi | 通过公开 API 接入战斗或开发运行时扩展 |
Editor/ | Game Card System 面板、六模式 Game Card Editor、FlowGraph Editor、Monitor 与自定义 Inspector | 使用编辑工具或核对编辑器行为 |
Demo/ | 预设内容、战斗场景、棋盘 UI、表现层脚本、音频与参考行为图 | 学习完整接线方式或验证功能 |
Integrations/GES/ | TG_GES_INSTALLED 启用后的 GES 事件桥接 | 项目同时使用 GameEventSystem 时 |
Docs/ | 指向在线文档的包内入口 | 从 Unity Project 窗口打开文档时 |
Samples~/CustomNodes/ | 七类可复制节点模板与七个完整示例 | 扩展自定义 FlowGraph 节点时 |
Changelog.md | 当前版本已经交付的核心能力 | 升级前核对版本变化时 |
Readme.txt 与 LICENSE.txt | 常用入口、支持方式与授权范围 | 初次导入或确认使用边界时 |
日常内容创作不需要直接修改 Runtime/ 或 Editor/,卡牌、卡组、单位、状态与遭遇战都由 Game Card Editor 创建和维护,包目录主要用于提供系统能力、参考内容与扩展入口
Demo 是一套完整的参考项目
Demo/ 把内容数据、场景接线与表现资源组织成一套可以直接运行和检查的卡牌肉鸽战斗,它使用正式的 Game Card Editor、FlowGraph、运行时与表现接口,因此既能验证安装结果,也能作为项目接线的参考基线
Demo/Scenes/ 按 Hunter、Mage、Priest 与 Warrior 四个职业分组,每个职业都包含普通、精英与 Boss 三场战斗,12 个场景统一采用 <序号>-<名称>.unity 命名,例如 Hunter 的三个场景为
Demo/Scenes/Hunter/1-Fenmoss Hollow.unity
Demo/Scenes/Hunter/2-The Spore Bog.unity
Demo/Scenes/Hunter/3-Mire of the Reaper.unity
这些场景引用 Demo/Databases/ 中的六个预设数据库,再由 Demo/Scripts/ 与 Demo/Content/ 提供棋盘、手牌、单位、HUD、意图、状态、奖励、音频与视觉效果
场景、数据和表现由引用连接,而不是依靠目录名称自动关联
六个预设数据库
Demo/Databases/ 中的数据库覆盖 GCS 的六类核心内容
| 数据库资产 | 提供的内容 |
|---|---|
PresetCardDatabase | 随包卡牌与卡牌行为图 |
PresetDeckDatabase | 四个职业的初始卡组与奖励卡组 |
PresetPlayerUnitDatabase | 四个可玩职业单位 |
PresetEnemyUnitDatabase | 12 场战斗使用的敌人单位与行为图 |
PresetStatusDatabase | 战斗中的增益、减益与规则状态 |
PresetEncounterDatabase | 12 个遭遇战、敌方阵容、战斗规则与奖励 |

上图中的六个数据库共同提供 Demo 的内容来源,资产存在于磁盘并不等于已经进入主动内容集合,只有注册到 GameCardManager 且处于 Active 状态的数据库才会参与对应类型的主动枚举,注册、排序与 Active 规则见数据库管理
表现资产按所属对象组织
| 目录 | 存放内容 |
|---|---|
Cards/<Type>/ | Basic、Burst、Curse、Skill 与 Support 的类型底图、Artwork 和卡牌 Prefab |
Decks/ | 四个职业的初始卡组与奖励卡组图像 |
Units/Player/<Class>/ | Hunter、Mage、Priest 与 Warrior 的玩家单位美术与 Prefab |
Units/Enemy/<Family>/ | 按职业敌人族组织的美术与 Prefab |
Units/Prefabs/ | 多个单位共同使用的表现组件 |
Statuses/ 与 Intents/ | 状态、意图图标,以及各自的 UI Prefab |
Encounters/<Class>/ | 每个职业的战斗背景、分层素材与遭遇战 UI 资产 |
Art/ | 跨对象共享的 Audio、Fonts、Materials、Prefabs、Resources、Shaders、Sprites 与 VFX |
这些目录按资产所属对象组织,同一类卡牌、同一支敌人族或同一职业的美术与 Prefab 会尽量集中在一起,替换表现时可以从对象目录直接找到关联资源,只有跨对象共用的内容才会进入 Art/
自定义节点示例
Samples~/CustomNodes/Templates/ 为七个公开节点家族各提供一份可复制文件,Samples~/CustomNodes/Examples/ 则为每个家族提供一个完整实现
目录名末尾的 ~ 会让 Unity 忽略其中内容,因此这些示例不会直接编译进项目,也不会出现在普通 Project 视图中
扩展节点时,应把模板复制到项目自己的运行时程序集并修改副本,不要直接编辑包内示例,属性、继承关系、端口与执行上下文的完整约定见自定义节点
把正式内容放进项目数据根目录
Game Card Editor 与 GameCardManager Inspector 创建自定义数据库时,默认把资产写入如下位置:
Assets/TinyGiantsData/GameCardSystem/
六类数据库各自进入固定子目录,数据库内创建的内容会作为该数据库的子资产保存
| 子目录 | 保存内容 |
|---|---|
CardDatabases/ | 自定义卡牌数据库及其中的卡牌 |
DeckDatabases/ | 自定义卡组数据库及其中的初始卡组、奖励卡组与其他卡组 |
PlayerUnits/ | 自定义玩家单位数据库及其中的玩家单位 |
EnemyUnits/ | 自定义敌人数据库及其中的敌人单位 |
StatusDatabases/ | 自定义状态数据库及其中的状态 |
EncounterDatabases/ | 自定义遭遇战数据库及其中的遭遇战 |
点击 Game Card System 面板中的 Quick Access > Custom Data 可以直接打开 GCS 当前识别到的数据根目录,如果项目已有自己的资产规范,也可以在 Assets/ 内整体移动 TinyGiantsData/GameCardSystem/,但必须保留 TinyGiantsData 与 GameCardSystem 这两级目录名,移动完成后,GCS 会通过其中的 Card Database 重新定位实际路径
-
随包 Demo 用于运行、检查和对照,不作为正式项目的内容工作区
-
正式内容在自定义数据库中创建,需要时再引用 Demo 的美术、Prefab 或行为图
-
包内容与项目数据保持分离后,版本更新不会覆盖项目资产,Demo 也能保留为未经修改的参考基线
明确这些目录边界后,可以通过第一场战斗观察数据库、场景对象与表现资产如何共同运行,也可以在Demo 概览中继续核对四个职业、12 个场景与随包内容的对应关系