用途
本技能用于在 Unity 项目开发中强制执行 TheOne Studio 的 Unity 开发标准,覆盖 C# 编码模式、Unity 架构(VContainer/SignalBus 与 TheOne.DI/Publisher)以及代码审查。它适用于编写或重构 Unity C# 代码、使用依赖注入实现功能、处理事件与信号、访问或修改游戏数据、审查代码变更或拉取请求,以及搭建项目架构等场景。
所有模式与示例兼容 Unity 6(使用 C# 9),不使用 C# 10+ 特性。
主要能力
技能按四个优先级组织规则:
优先级 1:代码质量与卫生(最重要)
- 启用可空引用类型,不允许可空警告
- 使用最小可访问性修饰符(默认 private)
- 修复所有警告,对编译器警告零容忍
- 错误必须抛出异常,绝不记录错误日志
- 运行时使用 TheOne.Logging.ILogger:无条件守卫(#if)、无前缀([prefix])、绝不在构造函数中记录日志;Debug.Log 仅用于编辑器脚本
- 字段使用 readonly,常量使用 const
- 使用 nameof 而非硬编码字符串
- using 指令置于最深作用域(尽可能方法级)
- 禁止行内注释,使用描述性命名
优先级 2:现代 C# 模式
- 用 LINQ 替代循环、扩展方法、表达式体成员
- 空合并运算符、模式匹配
- 现代 C# 特性(records、init、with)
优先级 3:Unity 架构
- 每个项目二选一:VContainer + SignalBus,或 TheOne.DI + Publisher/Subscriber
- VContainer 方案:构造函数加 [Preserve] 特性
- TheOne.DI 方案:构造函数加 [Inject] 特性
- 数据控制器模式:绝不直接访问数据
- 资源管理、UniTask 异步模式
- 服务/桥接/适配器集成模式
优先级 4:性能与审查
- LINQ 优化、避免分配
- 架构审查(DI、事件、控制器)
- C# 质量审查(LINQ、空值处理)
- Unity 专项审查(组件、生命周期)
- 性能审查(分配、热路径)
使用方式
技能通过快速参考指南按优先级导航到具体模式。触发时机包括:编写或重构 Unity C# 代码、使用依赖注入实现 Unity 功能、处理事件与信号、访问或修改游戏数据、审查代码变更或拉取请求、搭建项目架构。
代码审查清单按严重程度分级:
- 严重(必须修复):未修复可空警告、记录错误而非抛异常、运行时使用 Debug.Log、日志条件守卫、手动日志前缀、构造函数中记录日志、logger 使用空条件调用、缺少访问修饰符、忽略编译警告、行内注释、使用 Zenject 而非 VContainer、使用 MessagePipe 而非 SignalBus、直接访问数据、内存泄漏(未取消订阅)、缺少 IDisposable 实现
- 重要(应当修复):缺少 readonly/const、硬编码字符串、using 指令未置于最深作用域、冗余日志、冗长代码未用 LINQ、缺少 [Preserve] 或 [Inject]、热路径性能问题、业务逻辑缺少单元测试、公共 API 缺少 XML 文档
- 建议(可选):表达式体、空条件、模式匹配、命名改进、现代 C# 特性简化
适用场景
适用于采用 TheOne Studio 技术栈的 Unity 6 项目,尤其是需要统一代码质量、依赖注入架构、事件系统与数据访问规范的团队开发与代码审查流程。
限制
技能明确要求不使用 C# 10+ 特性,仅兼容 Unity 6(C# 9)。架构上强制二选一框架栈,禁止使用 Zenject 与 MessagePipe,禁止直接访问数据模型。关于该技能的具体安装方式、收费模式、平台支持范围等,资料中暂未提供。