项目结构
理解文件结构对于维护清晰的项目生命周期、确保安全升级以及有效管理版本控制至关重要。
游戏事件系统 遵循严格的 "逻辑与数据"分离原则。 此架构确保更新插件(核心逻辑)永远不会覆盖 您创建的事件、图表或生成的代码(用户数据)。
📂 目录树
下面是标准的层次结构。我使用不同的图标来指示每个文件夹的性质:
- 🛡️ 不可变核心: 永远不要修改、移动或重命名。
- 💾 可变数据: 您的项目数据。可以安全提交,可以安全修改。
- 🗑️ 可丢弃: 可以安全删除以进行优化。
Assets/
├── 📁 TinyGiants/ # [核心逻辑] 不可变的插件根目录
│ └── 📁 GameEventSystem/
│ ├── 📁 API/ # 🛡️ 接口与公共API
│ ├── 📁 Demo/ # 🗑️ 示例场景与资产(可以安全删除)
│ ├── 📁 Editor/ # 🛡️ 自定义Inspector与窗口逻辑
│ │ └── 📁 Icons/ # 🗑️ UI纹理(删除可减少<1.2MB的构建体积)
│ ├── 📁 Runtime/ # 🛡️ 核心引擎与事件类型
│ ├── 📄 LICENSE.txt
│ └── 📄 Readme.txt
│
└── 📁 TinyGiantsData/ # [用户数据] 您生成的内容保护区
└── 📁 GameEventSystem/
├── 📁 CodeGen/ # 💾 自动生成的C#类
│ ├── 📁 Basic/ # 🛡️ 基础类型(必需)
│ └── 📁 Custom/ # 💾 您的自定义类型(自动重新生成)
├── 📁 Database/ # 💾 您的事件数据库资产(.asset)
└── 📁 FlowGraph/ # 💾 您的可视化流程图(.asset)
架构说明
TinyGiants 包含工具本身(锤子)。 TinyGiantsData 包含您用它构建的内容(房子)。
⛔ 关键: "Plugins"文件夹警告
不要移动到"PLUGINS"
您 绝对不能 将TinyGiants或TinyGiantsData文件夹移动到标准的Assets/Plugins/目录中。
为什么这很关键?
- 编译顺序(脚本阶段):
Unity在编译您的标准游戏脚本(Assembly-CSharp)之前编译Plugins文件夹。
- 我们的插件需要引用您的自定义类(例如PlayerStats、InventoryItem)来为它们生成事件。
- 如果插件位于Plugins中,它无法看到您的游戏代码,会导致"找不到类型"错误。
- 相对路径依赖: 自动化代码生成器和数据库管理器依赖于特定的相对路径来定位资产。破坏此结构可能导致"Hub"无法追踪您的数据库。
- 资产保护机制: 插件包含后台AssetProtector服务。如果检测到这些文件夹被移动到Plugins,它会尝试警告您或阻止该操作以防止项目损坏。
💾 版本控制(Git/SVN)策略
对于使用源代码管理的团队,以下是推荐的配置:
| 文件夹路径 | 策略 | 原因 |
|---|---|---|
| TinyGiants/ | 提交 | 包含项目运行所需的核心插件代码。 |
| TinyGiantsData/.../Database | 提交 | 包含您的实际事件资产。关键数据。 |
| TinyGiantsData/.../FlowGraph | 提交 | 包含您的可视化逻辑图表。关键数据。 |
| TinyGiantsData/.../CodeGen | 提交 | 推荐。 虽然这些可以重新生成,但提交它们可以确保项目立即为其他团队成员编译,而无需先运行向导。 |
🧹 优化指南: 部署策略
游戏事件系统是模块化的。根据您的项目阶段,您可以精简它以减少构建大小。
部署层级
使用此表决定保留什么:
| 层级 | 要删除的文件夹 | 节省空间 | 后果 |
|---|---|---|---|
| 开发 | 保留所有内容 | 0 MB | 完整体验,包含示例和高分辨率UI。 |
| 生产 | TinyGiants/GameEventSystem/Demo/ | ~10 MB | 移除示例。一旦您掌握了基础知识,对所有项目都是安全的。 |
| 极简 | .../Editor/Icons/ | ~4 MB | UI降级。 自定义图标消失;窗口使用默认Unity样式。逻辑保持100%功能。 |
📉 极限压缩(< 1.2 MB)
如果您正在为超轻量级平台(例如即时游戏)构建,您可以达到极简层级。
- 删除Demo文件夹。
- 删除Icons文件夹。
- 确保您的CodeGen/Custom文件夹只包含您实际使用的事件类型。您可以使用**清理工具**来删除未使用的生成类。
提示
对于大多数PC/移动项目,层级1(删除Demo)就足够了。我建议保留Icons文件夹,以为您的设计师维护良好的工作流程。