UnityStarter 是一个生产级、模块化的 Unity 框架与工程模板,内置类虚幻 GAS 玩法能力系统、零 GC 核心、HybridCLR 热更新与 Luban 配置管线。本文将带你按图索骥,用一张"模块地图"快速看懂它的项目结构:仓库分为文档、工具、Unity 工程三大部分,核心框架模块全部集中在CycloneGames目录下,按 Gameplay、AI、内容(Data/Assets)、运行时基础设施与构建五大类组织,帮你 10 分钟建立完整认知。
仓库三大块:文档、工具与 Unity 工程
打开仓库根目录,结构非常清晰:
| 目录 | 作用 | 建议阅读顺序 |
|---|---|---|
UnityStarter/ | Unity 工程根目录,包含 Assets、Packages、ProjectSettings | ⭐ 第一站 |
Docs/ | 跨模块指南(音频最佳实践、问题解决方案等) | 第二站 |
Tools/ | 独立 Go 维护工具(改名、清理、音量标准化等) | 第三站 |
整体说明文档见 README.SCH.md,它是全文导航的总入口。Unity 工程内部还有四个关键区域:
Assets/ThirdParty/CycloneGames/—— 可复用的框架模块大本营(文章主角)Assets/Build/—— 项目自有的构建与 CI 管线Assets/UnityStarter/—— 模板场景与游戏侧资源,启动场景为 Scene_Launch.unityAnalyzers/—— 自研 Roslyn 代码分析器,20+ 条性能与规范规则
模块地图总览:五类模块各管一摊
CycloneGames目录下的 60+ 个模块可以归为五类,记住这张分类表,后续看任何模块都能"对号入座":
| 分类 | 代表模块 | 一句话职责 |
|---|---|---|
| 🎮 Gameplay | GameplayFramework、GameplayAbilities、GameplayTags、RPGFoundation | 玩法骨架与能力系统 |
| 🤖 AI | BehaviorTree、AIPerception | 行为树与高性能感知 |
| 📦 内容 | AssetManagement、DataTable、Audio、Localization | 资源、配置表、音频、本地化 |
| ⚙️ 基础设施 | Factory、Logging、Persistence、InputSystem、Settings | 对象池、日志、存档、输入、设置 |
| 🏗️ 构建与质量 | Build、Tools、Analyzers | 数据驱动构建与工程治理 |
官方推荐阅读顺序:GameplayFramework→AssetManagement→GameplayAbilities→GameplayTags→DataTable→Build。
Gameplay 模块:从 Actor 骨架到 GAS 能力系统
Gameplay 是整套框架的"主菜",模块间是"骨架 + 血肉"的关系:
- GameplayFramework:借鉴虚幻引擎的
Actor、Pawn、Controller、GameMode组织方式,负责玩法生命周期、相机流与场景流。文档见 README.SCH.md - GameplayAbilities:GAS 风格的数据驱动能力系统,包含属性(attribute)、效果(effect)、代价、冷却与表现队列,并带有明确的权威/副本执行边界。下方 GIF 展示了其演示场景中技能释放的实际效果:
- GameplayTags:层级化标签系统,提供生成的常量与查询工具,是能力系统之间的"通信语言"
- RPGFoundation:RPG 移动与交互基础,可与其他玩法包自由组合
- UIFramework:窗口管理与 UI 流程,资源加载则委托给
AssetManagement的 SLRU 缓存 - Choreography:引擎无关的动作表现调度,统一编排动画、音效、特效与预加载
另外GameplayFramework.AssetManagement、GameplayFramework.Factory等小目录都是桥接包——命名规律为X.Y即"X 与 Y 的可选集成层",看到这类目录就知道它是可插拔的胶水代码,而非核心依赖。
AI 模块:行为树 + 高性能感知双引擎
AI 模块只有两个核心包,但分工明确:
BehaviorTree:行为树运行时 + 可视化编辑器。左侧消息面板、中间树节点画布(Sequencer、Selector、ParallelNode 等)、右侧节点状态着色,是一套完整的可视化 AI 编排体验,文档见 README.SCH.md:
AIPerception:面向 Jobs/Burst 的感知系统,提供传感器查询与空间结构,走"低 GC 运行时"路线,让大规模单位感知不拖累帧率。
若要做多人游戏,还有BehaviorTree.Networking、AIPerception.Networking等实验性桥接包提供复制与快照契约(README 中均标注为 Experimental,接入前需完成端到端验证)。
内容模块:资源管理、配置表、音频与本地化
内容模块解决"游戏素材如何进、怎么管"的问题:
- AssetManagement:接口优先的资源加载抽象,核心亮点是有界的分段 LRU(SLRU)缓存与
CacheRetention保留策略。内置的 Asset Cache Debugger 面板可实时查看活跃句柄、引用计数、Provider 来源与泄漏检测,是排查资源问题的利器:
- DataTable:面向策划的数据管线,可选集成 Luban、MessagePack 与资源管理桥接。仓库根目录的 Luban 目录放有 Luban 构建配置(如 luban.conf)与代码生成脚本,策划改表后一键生成运行时数据。
- Audio:音频管理层,支持异步加载、运行时所有权与平台感知策略,事件图以可视化节点方式编排(如下图中按 Y 坐标自动排序的 Sequence Selector 分支):
- Localization:本地化模块,支持语言回退、分区文本与资产、事务式目录。
- FontAssets:内置 CJK、拉丁、符号与数字字体资源。
基础设施模块:日志、输入、持久化与质量治理
这一层模块"看不见但少不了",它们保证了中大型项目的可维护性:
Logging 三件套:Logging(无 Unity 依赖的日志契约)+Logging.Pipeline(有界处理、过滤与文件输出)+Logging.Unity(Unity 生命周期与 Editor 工具)。日志按模块通道(如[GraphicsSetting])着色显示,并支持点击日志直达源码行:
其他值得关注的模块:
| 模块 | 亮点 |
|---|---|
| Factory | 工厂 + 对象池,含 ECS/DOD 变体 |
| InputSystem | YAML 驱动的输入配置,支持多玩家设备所有权,演示见 Input_IntegrateSample.gif |
| Persistence 系列 | 版本化单记录存档,可选 VYaml / MessagePack / SystemIO 后端 |
| DeterministicMath | 定点数确定性数学,服务回放与锁步同步 |
| Settings | 带校验与向前迁移的设置状态管理 |
| Cheat | 构建期门控的内部调试命令系统 |
质量治理由 CycloneGames.Analyzers 承担:20+ 条 Roslyn 规则覆盖性能热路径、异步误用、Unity API 滥用等,项目级严重度策略统一放在 Default.ruleset 中分阶段启用。
构建模块与工具链:数据驱动构建 + 独立维护工具
Build(Assets/Build/)是项目自有基础设施,与其他模块的最大区别是:它设计为"随你的新游戏一起走"。内部结构为 Editor / Runtime / Tests 三层,构建配置由 BuildData.asset 这个 ScriptableObject 承载,版本元数据自动从 Git/Perforce 获取,并可选集成 HybridCLR(热更新)、Obfuz(混淆)、YooAsset 3 与 Addressables。CI 只有一个入口:
Unity -batchmode -quit -projectPath UnityStarter \ -executeMethod Build.Pipeline.Editor.BuildEntryPoints.RunCommandLine \ -buildTarget Win64 \ -pipelineProfile Assets/UnityStarter/Editor/Build/BuildData.asset \ -pipelineOutput Build/Windows/Release/UnityStarter.exe \ -pipelineCleanTools/则是一组独立 Go 工具(源码在 Tools/Scripts/),各平台可执行文件放在Tools/Executable/下:
| 工具 | 用途 |
|---|---|
rename_project | 安全重命名派生项目(模板转正第一步) |
unity_project_full_clean | 清理缓存、生成工程与构建产物 |
audio_volume_normalizer | 按类别标准化音频响度 |
texture_channel_packer | 纹理通道打包 |
unity_video_webm_converter | 视频转 Unity 友好的 WebM |
更多细节见 Tools/README.SCH.md。
新手阅读路线:四步建立完整认知
- 看总览:读 README.SCH.md 的"模块地图"章节,对照本文五大分类
- 读骨架:精读 GameplayFramework 与 Build 两个 README,理解"模板层 vs 框架层"的所有权模型
- 按玩法补课:玩战斗 → GameplayAbilities;做 AI → BehaviorTree;管资源 → AssetManagement
- 动手验证:打开
Scene_Launch.unity跑通启动流程,再修改BuildData.asset体验一次命令行构建
💡 小提示:想单独使用某个模块时,直接复制CycloneGames/下对应目录,再检查它的package.json、.asmdef和可选Integrations/文件夹即可——模块边界清晰,正是这套项目结构最大的工程价值所在。
【免费下载链接】UnityStarter
Production-ready modular Unity framework: UE-inspired Gameplay Ability System, zero-GC core, HybridCLR hot-update, Luban config pipeline,>项目地址:https://gitcode.com/gh_mirrors/un/UnityStarter
相关推荐
Robot Admin 项目结构一图看懂:新手友好的目录导览与模块拆解
Robot Admin 项目结构一图看懂:新手友好的目录导览与模块拆解 Robot Admin 是一款基于 Vue 3 + TypeScript + Naive
FastVideo-FastH3-Comfy 新手入门地图:一文看懂 6 个模型文件与目录结构
FastVideo FastH3 Comfy 新手入门地图:一文看懂 6 个模型文件与目录结构 刚接触 FastVideo FastH3 Comfy 时,打开仓
Harness²源码导读:目录结构、CLI命令链与核心模块关系图一次看懂
Harness²源码导读:目录结构、CLI命令链与核心模块关系图一次看懂 Harness² 是 Google 开源的递归 agent harnessing 框架
人工智能AI AgentAgent 框架