这个项目能做什么

UnityStarter 是一个面向生产、模块化的 Unity 基础项目与可复用框架底座,参考了虚幻引擎架构。其 GameplayFramework 围绕 Actor、Pawn、Controller 和 GameMode 应用虚幻风格的游戏逻辑组织方式,而 Gameplay Abilities 与 GameplayTags 则提供类似 GAS 的能力与标签原语,用于显式定义游戏逻辑契约。 它面向具有长期迭代需求的中大型 Unity 项目:明确的归属边界、注重性能的运行时系统、与引擎无关的核心层,以及项目自有的构建/工具基础设施。它既可作为项目模板使用(在 Unity 中打开 UnityStarter/,使用内置工具重命名),也可通过将 CycloneGames 下的文件夹移动为 UPM 包来使用。 架构原则包括:在关键之处优先使用纯 C#(核心契约避免泄漏 UnityEngine 类型)、将 Unity 作为集成层、隔离可选集成(DI 容器、补间引擎、序列化器、传输层、热更新后端)、将性能作为设计约束(零 GC 或低 GC 热路径、可复用缓冲区、显式生命周期清理)、项目自有的构建基础设施,以及将文档作为 API 的一部分。 模块地图要点: - Gameplay:GameplayFramework(Actor/Pawn/Controller/GameMode、生命周期、摄像机与场景流程)、GameplayAbilities(数据驱动能力、属性、效果、消耗、冷却、提示、权威/副本角色)、Choreography(无引擎依赖的动作表现调度)、GameplayTags(层级标签、生成常量、查询辅助、编辑器工具)、RPGFoundation、UIFramework(窗口管理、UI 流程、基于资产的加载与 SLRU 缓存)、Foundation2D。 - AI:BehaviorTree(运行时、编辑器支持、测试)与 AIPerception(面向 Jobs/Burst 的感知、传感器查询、空间结构)。 - 数据、资产与内容:AssetManagement(接口优先的加载,带边界的分段 LRU 缓存、CacheRetention 策略、诊断、异步流程)、DataTable(面向设计师的管线,可选 Luban、MessagePack 与资产管理桥接)、GameplayTags.DataTable、Choreography 桥接、Localization(区域回退、分区文本/资产、事务性目录)、Audio、FontAssets。 - 运行时基础设施:Factory(对象池、对 DI 友好、ECS/DOD 变体)、Logging 与 Logging Pipeline(无 Unity 依赖的契约、有界处理、接收器、文件输出)、DeterministicMath(用于回放/帧同步的定点数学)、Hash、IO、Persistence(带版本的单记录编排与 Record V1 完整性检查)以及 SystemIO、VYaml 和 MessagePack 编解码器、InputSystem(YAML 编写、映射上下文、按玩家的设备归属、本地多人)、DeviceFeedback、Settings 与 Settings.Persistence、Utility、Cheat。 - 构建、工具与质量:Build(项目自有的播放器构建管线、版本信息、可选热更新钩子、面向 CI 的方法)、Tools(用于重命名、包裁剪、清理、文件树、音频归一化、纹理通道打包、WebM 转换的 Go 实用工具)、Analyzers(20 多条 Roslyn 规则,通过 Assets/Default.ruleset 分级启用)。 网络模块(Networking、GameplayFramework.Networking、AIPerception.Networking、BehaviorTree.Networking、RPGFoundation 移动/交互/投射物网络)被描述为实验性,需在投入生产前进行端到端验证。 构建与 CI:Assets/Build/ 是项目自有基础设施,包含 BuildData ScriptableObject 配置、Git 或 Perforce 修订元数据、编辑器菜单项与命令行入口点、可选的 HybridCLR、Obfuz、YooAsset 3 与 Addressables 集成,以及单一 CI 入口点 Build.Pipeline.Editor.BuildEntryPoints.RunCommandLine。批处理模式与发布构建需要版本控制元数据;仅交互式 Development 构建可使用 LocalDevelopment 回退。 快速开始:克隆仓库,在 Unity Hub 中打开 UnityStarter/,打开 Scene_Launch.unity,阅读 GameplayFramework 与 Build 的 README,在派生新项目时运行 rename_project.exe。单个模块可在检查其 package.json、asmdef 文件与依赖后,从 Assets/ThirdParty/CycloneGames/ 复制。 技术栈示例包括 UniTask、R3、VitalRouter、VYaml、Burst、Collections、Mathematics、Input System、Cinemachine、URP、TextMeshPro、UGUI、Splines、Scriptable Build Pipeline、NuGetForUnity,以及可选的 VContainer、PrimeTween、Navigathena、Luban、MessagePack、HybridCLR、YooAsset、Addressables、Obfuz、Mirror 和 Mirage。该项目采用 MIT 许可证,并提供英文与简体中文双语文档。