跳到主要内容

项目结构

GCS · Start Here

GCS 将包代码、demo 内容、预设数据库、示例模板和用户自定义内容分开放置。复制资产或创建自己的游戏内容前,先了解这张地图。

用于导入后确认目录职责,也用于判断新的卡牌、卡组、敌人、状态、遭遇战、背景、VFX 或音频资产应该放在哪里。

GCS 导入后位于 Assets/TinyGiants/GameCardSystem/。这个根目录属于包本身。可以阅读源码,也可以复制 demo 资产作为起点,但正式项目内容应放在自定义数据根目录,避免包更新覆盖你的工作。

Assets/
├── 📁 TinyGiants/
│ ├── 📁 GameCardSystem/ # 插件根目录
│ │ ├── 🛡️ Runtime/ # 运行时引擎、数据模型、战斗状态机、GCS.API.cs
│ │ ├── 🛡️ Editor/ # 面板、Workbench、Monitor、FlowGraph 编辑器、inspectors
│ │ ├── 📁 Demo/ # 随包可玩的参考内容
│ │ │ ├── 📁 Content/ # 按所有者组织的 demo 资产
│ │ │ │ ├── 📁 Art/ # 共享 UI、字体、材质、shader、共享 VFX/audio
│ │ │ │ ├── 📁 Cards/ # 卡牌族美术、基础资产、卡牌 prefab
│ │ │ │ ├── 📁 Decks/ # 卡组美术和卡组所属资产
│ │ │ │ ├── 📁 Encounters/ # 职业背景和遭遇战 UI 美术
│ │ │ │ ├── 📁 Intents/ # 意图图标和意图 UI prefab
│ │ │ │ ├── 📁 Statuses/ # 状态图标和状态 UI prefab
│ │ │ │ └── 📁 Units/ # 玩家/敌人美术与 prefab
│ │ │ ├── 📁 Databases/ # 六个 Preset*Database 资产
│ │ │ ├── 📁 Scenes/ # 12 个可玩战斗场景
│ │ │ ├── 📁 Scripts/ # demo 表现层:棋盘、手牌、HUD、弹窗、音频
│ │ │ └── 📁 Editor/ # 仅 demo 使用的编辑器辅助工具
│ │ ├── 🔌 Integrations/GES/ # 可选 GameEventSystem 桥接
│ │ ├── 📘 Docs/ # 离线文档索引
│ │ ├── 📋 Samples~/CustomNodes/ # 可复制的自定义节点示例和模板
│ │ ├── 📄 Changelog.md
│ │ ├── 📄 LICENSE.txt
│ │ └── 📄 Readme.txt
│ └── 📁 Shared/ # TinyGiants 共享运行时/编辑器工具
└── 💾 TinyGiantsData/GameCardSystem/ # 你的项目自有 GCS 内容
├── 📁 CardDatabases/
├── 📁 DeckDatabases/
├── 📁 StatusDatabases/
├── 📁 EncounterDatabases/
├── 📁 PlayerUnits/
└── 📁 EnemyUnits/

Runtime/Editor/ 是实现目录。内容创作发生在 Workbench 和项目自有数据目录里,不需要直接编辑包源码。


Demo 内容组织方式

Demo/Content/ 按资产所属对象切分,而不是按资产类型切分。这里没有给对象专属资产准备顶层 Prefabs/Audio/ 汇总目录。卡牌美术放在对应卡牌族目录,敌人 prefab 放在对应敌人目录。

文件夹内容
Cards/<Type>/按卡牌类型存放的卡面美术、卡牌基础资产和卡牌族资产。
Decks/卡组封面图和卡组所属表现资产。
Units/Player/<Class>/按职业存放的玩家美术和 prefab。
Units/Enemy/<Class>/按职业存放的敌人美术和 prefab。
Statuses/状态图标,以及状态 UI prefab。
Intents/意图图标,以及意图 UI prefab。
Encounters/<Class>/按职业存放的遭遇战背景和遭遇战专属 UI 美术。
Art/只放跨对象共享的资产:UI sprites、字体、材质、shader、共享战斗 VFX 和共享音频。

规则很简单:有唯一所有者的资产放进所有者目录;真正跨对象共享的资产放入 Art/。自定义内容也建议沿用同一规则。


数据库与场景

Demo/Databases/ 存放 Initialize System 会注册的六个预设数据库:

PresetCardDatabase PresetDeckDatabase PresetEncounterDatabase
PresetEnemyUnitDatabase PresetPlayerUnitDatabase PresetStatusDatabase

Demo/Databases 文件夹中的预设数据库 ScriptableObject

数据库是活动内容库。资产即使存在于磁盘上,只要没有加入活动数据库,战斗也看不到它。卡牌、状态、敌人或遭遇战没有出现在选择器里时,优先检查数据库注册状态。

Demo/Scenes/ 包含 12 个战斗场景,路径形如 <Class>/<n>-<Name>.unity,每个职业三场,难度递增:普通、精英、Boss。Hunter/1-Fenmoss Hollow.unity 是标准第一场,第一场战斗使用的就是它。


Samples~

Samples~/CustomNodes/ 存放自定义节点参考材料:HealIfBelowHalfNode.csAddValuesNode.csFlowNodeTemplate.cs

结尾的 ~ 会让 Unity 忽略该文件夹,因此示例不会编译进项目,也不会出现在 Project 窗口中。将示例复制到你自己的运行时程序集,改名后编辑副本。具体见自定义节点示例讲解


自定义内容根目录

正式项目内容应放在:

Assets/TinyGiantsData/GameCardSystem/

这是 Quick Access > Custom Data 打开的目录。编辑器会追踪它的实际位置,所以如果项目有自己的目录规范,也可以把它移动到 Assets/ 下的其他位置。把内容放在这里,可以把你的工作与包内 demo 内容分开。

demo 资产是参照物,不是工作区

当某张 demo 卡、敌人、状态或遭遇战接近目标效果时,先复制到自定义数据库,再编辑副本。不要直接修改 demo 原件;它们是可对照的参考资产,包更新时也可能被覆盖。