Files
cneicy d74c2f08ca feat(packages): 内置 SDK 包并完善 ContextLoader 集成
- 将 ShrinkEventBus、ShrinkDataSaver 及其 EventBus 集成从 gitlink 转为仓库直接维护的完整 UPM 包,补齐运行时、编辑器工具、测试与文档
- 新增 Command 和 Network 的 App 集成组件,支持 ContextLoader 服务发布、可逆注销及 Network Loopback 生命周期管理
- 更新 Starter 与演示组合逻辑,缺失模块时可注册、已有兼容安装器时可覆盖,并补充宿主启动断言
- 升级内部包依赖与 Shared CodeGen 包定义,放宽 Integration.App 包的 Git 忽略规则
- 将独立服务器生成器改为基于已编译程序集的语义扫描,支持 partial、复杂泛型、命名冲突检测及模板 SHA-256 覆写保护
- 新增 Network 语义扫描、模板保护和 App 组件生命周期测试
- 新增真实 UPM 消费工程验证脚本,校验内部版本一致性、程序集加载及 EditMode 测试
- 重构当前架构文档并归档已完成的 Cordis 迁移与旧代码地图
2026-08-18 18:06:34 +08:00

3.3 KiB

代码约定

总体风格

  • 代码整体偏 Unity 常规 C# 风格,使用 PascalCase 命名类型与公开成员,私有字段使用前导下划线。
  • 重要入口类大量使用 public static class,例如:
    • Assets/Modules/ShrinkEventBus/Runtime/EventBus.cs
    • Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.cs
    • Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSettings.cs
    • Assets/Modules/ShrinkDataSaver/Runtime/MigrationChain.cs
  • 面向使用者暴露简单 API,内部状态则保留在静态字段中。

命名约定

  • 事件类统一以 Event 结尾,见 Assets/Modules/ShrinkDataSaver.Integration.EventBus/DataSaverEvents.cs
  • 事件参数类统一以 EventArgs 结尾,见 Assets/Modules/ShrinkDataSaver/Runtime/SaveTypes.cs
  • 配置类统一以 SettingsOptionsConfig 结尾。
  • 编辑器窗口统一以 EditorWindow 结尾,见:
    • Assets/Modules/ShrinkEventBus/Editor/EventBusViewerWindow.cs
    • Assets/Modules/ShrinkDataSaver/Editor/ShrinkDataSaverEditorWindow.cs

模式约定

  • Unity 运行时与编辑器严格分目录、分 asmdef。
  • 用 Attribute 表达声明式能力:
    • [EventBusSubscriber]
    • [EventSubscribe]
    • [Cancelable]
    • [HasResult]
  • 用接口做最小抽象,而不是引入完整容器:
    • IStorageProvider
    • ISaveModule
    • ISaveModule<T>

空值与语法习惯

  • 仓库同时使用普通 C# 空值判断和 Unity 对象真值判断。
  • ShrinkEventBus 某些文件启用了 #nullable enable,例如:
    • Assets/Modules/ShrinkEventBus/Runtime/EventBase.cs
    • Assets/Modules/ShrinkEventBus/Runtime/ListenerList.cs
  • 但整个仓库并没有统一启用可空引用,说明这是局部使用而非全局规范。

日志与注释

  • 日志前缀较统一,常见前缀有:
    • [EventBus]
    • [ShrinkDataSaver]
    • [ShrinkDataSaver.Integration]
  • 源码注释和用户可见菜单文本原本倾向中文。
  • 但当前有多处中文字符串出现乱码,典型位置包括:
    • Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.cs
    • Assets/Modules/ShrinkDataSaver/Editor/ShrinkDataSaverEditorWindow.cs
    • Assets/Modules/ShrinkDataSaver/README.md
    • Assets/Modules/ShrinkDataSaver.Integration.EventBus/README.md

错误处理

  • 运行时代码多采用“抛异常 + 触发失败事件 + Debug.Log”混合策略。
  • 对非关键模块失败通常记录日志后跳过,对关键模块失败则终止保存,见 Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.cs
  • 异步 fire-and-forget 分支会用统一包装打印异常,见 Assets/Modules/ShrinkEventBus/Runtime/EventBus.cs

测试约定

  • 测试位于 Assets/Modules/ShrinkDataSaver/Tests
  • 同时使用 [Test][UnityTest]
  • 测试通过 MockStorageProvider 隔离文件系统,见 Assets/Modules/ShrinkDataSaver/Tests/MockStorageProvider.cs

可读性与组织

  • 单文件职责通常比较集中,尤其是 Runtime 层。
  • ShrinkSave.csShrinkDataSaverEditorWindow.cs 体量偏大,已经承担多个职责。

结论

  • 当前代码约定的关键词是:静态门面、Attribute 驱动、asmdef 分层、中文日志、最小抽象。
  • 如果后续继续扩展,最需要先统一的是编码、可空规范和部分大文件拆分标准。