首页 / 分级学习路径
分级学习路径
这个站有 25 页、30 多万字,从头读一遍是最低效的用法。
这一页给四条按目的分级的路线:面试速成、系统学习、
接手改代码、线上救火。每条都标了时长和该跳过什么。
分级的原则
每条路线都分 L1 / L2 / L3 三层。L1 是「不看会出事」,L2 是「看了少走弯路」,L3 是「深挖」。
时间紧就只走 L1,L1 加起来都不超过两小时。
路线 A · 面试速成(3~4 小时)
目标:能对着任何一个模块讲 10 分钟,能讲 3 个有深度的 bug 故事,能答架构取舍。
如果是为鸣潮客户端开发(A93502)转岗准备,先看这一页的章节分类:
面试预习计划(把预习计划按本站 11 章节重新归类)。
L1 · 必须过一遍(90 分钟)
| 顺序 | 读什么 | 要带走的 |
|---|---|---|
| 1 | 关键数字速记表 | 行数、协议号、超时值。面试时说得出具体数字,可信度差一个量级 |
| 2 | 五个完整故事 | 每个都按「背景→现象→定位→根因→解法→沉淀」六段。背结构不背文字 |
| 3 | 三大单例 + 为什么 Model 可空 | 这是「框架怎么设计的」这类问题的标准答案起点 |
| 4 | 开局五问 + 被证伪的判断 | 「怎么排查问题」「有没有判断错过」两道必考题 |
L2 · 挑两个模块讲透(60 分钟)
次选:⑦ 副本结算
L3 · 有余力再看(60 分钟)
- 十二条排查规律——被问「你从这些 bug 里总结出什么」时直接答
- 十条可迁移的方法论——被问「换个技术栈你还剩什么」时直接答
- 六个 Tick 阶段——引擎向岗位会追问
- 工具链视角的设计取舍——如果面的是引擎/工具组
路线 B · 系统学习(2~3 天)
目标:真正理解这套框架,而不是记住结论。
1
先建坐标系:名词与缩写表(30 分钟)
「灯」「栅栏」「站位序」「空怪」这些词后面到处出现。先过一遍名词,后面阅读速度翻倍
2
框架与分层总纲 全文(2 小时)
这是唯一一篇建议逐字读完的。特别是
事件系统三种写法的对错 和
组件生命周期六个钩子——这两处的坑最贵
3
再读底座:场景加载命令链 + 地图流送与 DataLayer(2 小时)
4
5
回头读 Bug 案例大全(半天)
一定要在读完模块之后读。先读 bug 会变成背结论,
读完模块再读才会有「哦这里确实会出事」的感觉
6
收尾:重构与加功能指南 + 编辑器 Scheme
这两篇是「要动手时」才有用,先读会觉得抽象
路线 C · 接手改代码(半天上手)
目标:明天就要在这套代码上提交改动,不想第一次就被打回。
L1 · 动手前必读(40 分钟,不读会返工)
1. 编译流水线
「0 错误」不等于产物更新了。
全项目任意文件有诊断错误就会在 emit 前退出,磁盘 .js 可能压根没变。
判断改动是否真的落到产物,只能看
npm run compile 的产物本身。最常撞的三条:Scheme export 必须独立文件、
no-number-or-undefined、no-uninitialized-vars。
后两条是 V8 隐藏类的原因,不是洁癖。3. 事件回调必须是稳定引用
写成
private readonly xxx = () => {} 实例属性。
用 bind 移不掉,用匿名箭头会被 GC 掉。这个坑不报错,只是行为诡异。保留 CRLF(否则 diff 全是噪声)、注释最多 2 行、
Log 带模块前缀(复测时靠关键字过滤)、p4 不要 lock。
L2 · 按你要做的事跳读(20 分钟)
| 你要做的 | 跳到 |
|---|---|
| 给已有功能加一个字段 | 加字段七步(协议 → Model → Controller → View → Scheme → 表 → 编译) |
| 加一条协议 | 注册三处 + int64 必须转 + 收包四防御 |
| 加一个编辑器节点 / 参数 | 要动三处 + 走 gulp 不是 npm |
| 加一个 UI 界面 | 控件索引是位置不是名字 + 防重入三件套 |
| 加一个新玩法模块 | 六个文件的标准落地路径 |
| 动传送 / 结算这种重模块 | 先读该模块页的「常见修改场景」和「雷区」两节 |
L3 · 提交前(10 分钟)
照 提交前自查清单 走一遍。最容易漏的三条: grep 产物确认真 emit、新状态标志检查了所有出口(含提前 return)、 改的 action 有没有第二个注册点。
路线 D · 线上救火(现在就要结论)
按现象直接跳
| 现象 | 先看 | 常见根因类型 |
|---|---|---|
| 角色 / 物体不显示 | 排查手册 4.1 | 相机没切(不是没显示)、材质残留、VisibilityLock 没 pop |
| 卡住不动 / 流程走不下去 | 排查手册 4.2 · 场景加载无超时兜底 | 状态标志漏复位、等的事件被提前消费、回调被覆盖、无超时的等待 |
| 配了没生效 | 排查手册 4.3 | 双 Scheme 不一致、表没导、走了另一个注册点 |
| 表现异常 / 穿帮 | 排查手册 4.4 | 遮罩关闭早于最后一个恢复项、loadscene 自带后处理 |
| 数据不对 / 残留 | 排查手册 4.5 | 清理路径漏一步、缓存复用分支没处理入参变化、下标错位 |
| 穿地 / 掉出世界 / 地形消失 | 流送假阳性 | Cell Activated ≠ 碰撞体已 build、流送灯交接没执行、等待流送永久不返回 |
| 某块场景 / 子关卡没出来 | 子关卡差集 · DataLayer 工具 | DataLayer 没开、两套 LayerTasks 求差集结果不对、上一张图状态没重置 |
找日志
| 场景 | 路径 |
|---|---|
| QA / 用户给的「Client(N)」 | Downloads 下的日志快照 |
| 自己在编辑器里复现 | Saved/Logs/Client.log(UTC 时间戳,含多段 PIE) |
过滤关键字见 grep 套路。传送类一律带「传送」前缀,结算类带「副本结算」。
各页深度分级参照
不确定某页要不要现在读,看这张表:
| 页面 | 层级 | 什么时候读 |
|---|---|---|
| 名词与缩写表 | L1 | 最先读,30 分钟建坐标系 |
| 框架与分层总纲 | L1 | 所有模块的公共底座,逐字读 |
| 排查与调试手册 | L1 | 出问题时;平时至少把开局五问背下来 |
| 重构与加功能指南 | L1 | 动手前,尤其编译流水线那节 |
| 场景加载命令链 | L1 | 读传送 / 传送点 / 两种重生之前;它们都落在这条链上 |
| 地图流送与 DataLayer | L1 | 同上。「穿地」「地形卸载」「DataLayer 没开」都在这一页 |
| ① 传送 | L2 | 面试主打 / 要改传送时 |
| ⑦ 副本结算 | L2 | 面试次选 / 要改结算表现时 |
| Bug 案例大全 | L2 | 读完模块之后再读 |
| 协议总索引 | L2 | 查号时;这是协议号的单一事实源 |
| 面试问答库 | L2 | 面试前一周 |
| ⑧ 爬塔 · ⑥ 关卡子弹 | L3 | 要改这两个模块时 |
| ② · ③ · ④ · ⑤ | L3 | 要改时;逻辑量小,随查随用 |
| 宇宙编辑器 Scheme | L3 | 要动编辑器 / 配表界面时 |
| 历史文档归档 | L3 | 找旧方案原文时;注意里面的协议号可能过时 |
| xcmskills 技能包 | 工具 | 让 AI 帮忙改这套代码时 |
自测:你真的看懂了吗
不看答案能说清这十个问题,说明这个站你已经吃透了:
架构层
链路层
排查层
工程层
10. 你要改一个 action 的行为,动手前的第一件事是什么?
答案:grep 有没有第二个注册点——
同一个 action 常常注册了 player / entity 两套实现,
只改一套的话交互触发的那条路径不生效。见
十八条铁律第 1 条