可复用技术知识库模板 private

可复用技术知识库模板

这不是 QMGame 的运行时实现,而是以后分析任何 Unity/前后端模块时使用的文档模板。目标是让知识可以迁移,而不是只留下某个项目的类名列表。

返回技术文档目录

1. 每个模块固定回答的八个问题

新建模块文章时按下面顺序写,不要把代码、流程和经验混成一段:

  1. 一句话结论:这个模块的真实职责是什么。
  2. 边界:它属于 Logic、Rendering、Network、Server、Editor 还是 Content Pipeline。
  3. 输入和输出:输入事件/配置/资源,输出状态/对象/消息/文件。
  4. 完整时序:从入口到完成、失败、取消和重试。
  5. 源码证据:类、方法、资产、配置字段和协议名。
  6. 可扩展点:新增角色、地图、技能、节点或平台时要改什么。
  7. 排错矩阵:现象对应的第一检查点和下一跳。
  8. 跨项目抽象:去掉项目名后,哪些接口和原则可以直接复用。

2. 推荐文章骨架

# [模块名]

> 一句话结论。说明本文范围,不解释哪些内容。

[返回目录](/topics/qmgame-technical-guide/)

## 1. 结论和边界
## 2. 运行时/编辑器/服务端职责
## 3. 输入、输出和数据结构
## 4. 端到端时序
## 5. 关键代码(每段先解释再贴代码)
## 6. 配置和资产制作
## 7. 生命周期、取消、重试和销毁
## 8. 联机/跨线程/异步边界
## 9. 新项目迁移步骤
## 10. 排错矩阵
## 11. 源码索引和证据等级

每个小节只回答一个问题。一个小节超过两个屏幕时,拆成二级文章,并在目录中保留“快速导读”和“深入实现”两条入口。

3. 证据等级

文档必须把“代码确认的事实”和“设计建议”分开:

标记含义写法
SOURCE在源码、Prefab、Controller 或协议中直接确认给出文件路径、类/方法和关键字段
ASSET在 Unity 资源序列化文件或 Inspector 配置中确认给出资源路径、GUID 或字段名
RUNTIME通过运行日志、Profiler 或复现确认给出复现条件和观察点
INFERRED根据多个事实推导,尚未直接观测明确写“推断”,不要写成确定事实
RECOMMENDATION面向新项目的改进建议与当前项目实现分段

禁止把“典型 Unity 做法”写成“当前项目就是这样做的”。如果没有读到 Controller 资源、Prefab 或服务端处理器,只能写成待验证项。

4. 流程图和代码的写法

4.1 流程图

先画责任边界,再画调用细节:

flowchart LR
    Input[输入/网络/编辑器] --> Logic[Logic 状态]
    Logic --> Adapter[跨层接口]
    Adapter --> View[Rendering]
    View --> Feedback[VFX/Audio/UI/Camera]

跨端流程使用 sequenceDiagram,并标出消息方向、权威端和失败回包。

4.2 关键代码

代码片段必须同时说明:

  • 它在哪个生命周期阶段执行。
  • 它读取哪个输入。
  • 它改变哪个状态。
  • 它为什么不能被另一层直接替代。
  • 如果复制到别的项目,哪些类型需要替换。

不要整段粘贴 200 行文件;只保留能证明结论的 5-30 行,并链接完整源码路径。

5. 迁移说明的固定格式

任何可复用模块,都写一张“迁移表”:

QMGame 依赖新项目替换为保留的抽象
MessageCenter任意事件总线生命周期事件和订阅释放
Entitas ContextECS/领域容器实体、事件、系统顺序
AddressablesX/AMFAddressables/AssetBundle/Resources异步句柄、引用计数、失败处理
WorldAdapter世界会话对象当前地图、当前玩家、场景状态
CameraManager相机编排器相机选择、目标绑定、效果栈
MapProcessor地图解析器数据文件到运行时元素的转换

迁移步骤要可执行:依赖清单、接口替换、资源重建、网络契约、测试场景、验收日志。

6. 生命周期和资源所有权

每篇文章都必须明确:

  • 谁创建对象。
  • 谁持有引用。
  • 谁负责异步完成后的二次有效性检查。
  • 谁销毁、回收或取消订阅。
  • 切图、重连、对象池复用时如何避免旧回调污染新对象。

对于 Camera、VFX、Animator、NavMesh、UI 等表现对象,必须说明它们是否拥有逻辑状态。通常表现对象只消费逻辑状态,不应成为权威数据源。

7. 复用前的验收清单

  • 能从目录在三分钟内找到入口、时序、源码和排错段落。
  • 当前项目事实与通用建议分开。
  • 所有关键结论都有文件或资源证据。
  • 正常、失败、取消、重试、重连和销毁路径都写了。
  • 依赖项目专有类型的地方都有替换表。
  • 代码片段能解释,而不是只有粘贴。
  • 变更后同步更新目录、交叉链接和源码索引。
  • 文章标题不使用项目临时名,使用可搜索的能力名。

8. 维护策略

文档更新与代码改动按模块绑定:

代码改动至少检查的文章
Scene/Map/Addressables场景加载、地图流水线、资源加载、排错
Camera/Follow/ShakeRendering、玩家动画/表现、相机专题
Hero spawn/PlayerId玩家创建、联机同步、Loading Ready
NavMesh/MoveController客户端寻路、服务端校验、联机同步
Protocol/Session/Battle网络协议、联机同步、服务端分布式
Editor exporter/configEditor 扩展、内容生产、配置模块

每次发布时记录:代码版本、资源版本、配置版本、文档更新时间和未验证项。这样下一个项目可以复用“方法”和“验收标准”,而不是误复制旧项目的 GUID、端口或类名。