《Cocos 游戏开发高级编程》目录

《Cocos 游戏开发高级编程》全书导航页:说明本卷定位与读者画像、前置知识、三条阅读路径与八周排期,交代贯穿项目《方块冲刺》在卷三里的深化方向与引擎源码引用口径,讲清 L2/L3/L0 三层的可验证边界,并按四个部分列出 11 章 33 节的完整章节索引与常见问题速查表,方便按需定位与跳读。

目录

欢迎来到《Cocos 游戏开发高级编程》。卷一《入门》是「把引擎拆开看」,卷二《实战》是「把零件装回一台能出货的机器」,这一卷回过头去把引擎本身当研究对象:它内部怎么工作、为什么这么设计、出了问题该往哪里挖。

到这里,你已经能用 Cocos Creator 3.8 交付一个能发布、能回滚、能热更的产品。但「会用」和「懂」之间还有一层:当性能不达预期、当某段表现和直觉不符、当你要裁剪引擎体积或改一段渲染逻辑时,只靠 API 文档是走不通的。你需要知道引擎在背后做了什么——渲染管线怎么组织、合批为什么会被打断、cc.d.ts 里那些导出是怎么映射到源码的、内存里到底住着谁。

本页给出全书的阅读路线。你可以从第 1 章 1.1 开始顺序通读,也可以先看下面的三条路径,挑一条最合你胃口的走法。

这一卷写给谁

读者现状读完能拿到什么
读完卷一、卷二、想真正吃透引擎的人会写组件、能发布产品,但机制层面仍是黑盒从引擎分层、渲染管线到内存与原生的一整套内部视角
有 Unity / 自研引擎背景、转 Cocos熟悉引擎内部概念,需要落到 Cocos 的实现Cocos 的 Effect 体系、合批机制、源码结构与定制路径
需要做深度优化的开发者知道要优化,但不知道瓶颈在引擎的哪一层定位到具体子系统(渲染 / 物理 / 动画 / 内存)的分析方法
技术负责人 / 引擎维护者要决定是否裁剪引擎、改源码、升级版本引擎定制与升级的完整决策链与代价评估

前置知识:读完卷一与卷二,或已具备等价基础(看得懂 TypeScript 组件脚本、走过一次完整发布流程)。建议本机安装 Cocos Creator 3.8——本卷有大量工程文件与编辑器配置片段,命令行无法复现;但引擎源码引用与组件脚本部分(L2)可以独立验证。

本卷与前后卷的分工

四卷本里,卷三处在「会用」与「懂」之间。三卷各回答一个问题:

卷回答的问题主要战场交付物
卷一《入门》引擎里的每件事怎么工作?手写 mini2d,从零实现帧循环、渲染、物理、存档一个能跑、能测、能截图的 2D 运行时骨架
卷二《实战》怎么用引擎做出并发布一个产品?Cocos Creator 编辑器与工程体系一个发布到 H5 / 微信 / 原生的《方块冲刺》
卷三《高级编程》引擎为什么这么设计、问题往哪里挖?引擎内部机制、源码与定制一套能定位瓶颈、能改引擎、能评估升级的分析能力

所以卷三不重做游戏。 它把卷二那个产品当素材:性能数字沿用卷二 13.3 定的帧预算,工程设定沿用卷二那套,区别只在于——卷二告诉你「这样写」,卷三告诉你「引擎为什么这样跑、什么时候该往下挖一层」。

如果你只读过卷一,卷三照样能读:第 1–3 章不依赖卷二的具体工程细节。但第 7 章之后的优化与定制话题会频繁引用卷二的产品形态,建议至少先扫一遍卷二的目录页 。

动手前的环境准备

本卷的验证分三层(详见下面的「可验证口径」),环境要求按层不同:

要做的事需要装什么说明
类型检查 L2 组件脚本Node 26 + @cocos/creator-types@3.8.8 + TypeScript不需要编辑器,tsc --noEmit 即可
真跑 L1 纯逻辑Node 26 + vitest与引擎无关,可独立单测
打开 L3 工程文件Cocos Creator 3.8.8 编辑器.effect / .mtl / 场景与构建配置必须在编辑器里查看
核对 L0 源码联网访问 cocos/cocos-engine 仓库源码引用都标了路径与 3.8.8 版本

没有编辑器也能读大部分内容:第 1 章、第 7 章的 L1 部分、第 10–11 章基本不依赖编辑器。但第 3–6、8–9 章涉及大量工程文件与原生工程,装一个 3.8.8 编辑器会顺畅得多。

三条阅读路径

路径 A:完整通读(约 8 周)

最完整的一条。从引擎分层讲到跨引擎对照,每章都在回答「这一层为什么这么设计」。

第 1–3 章(架构与渲染)→ 第 4–6 章(高级渲染与子系统)
→ 第 7–9 章(性能、原生与定制)→ 第 10–11 章(架构与收官)

适合想把 Cocos 用到底、或者未来要做引擎相关工作的读者。第 7 章(内存与性能)是全卷的枢纽,前面几章讲清机制,第 7 章把「怎么量化、怎么定位、怎么闭环」串起来。

路径 B:按主题跳读(约 4 周)

已经有明确目标的话,按下面的分组跳读:

渲染方向:1 → 2 → 3 → 4
子系统方向:5 → 6
性能与原生方向:7 → 8 → 9
架构方向:10 → 11

每组内部是递进的,组之间可以独立看。渲染方向建议从第 1 章读起——不先理解引擎分层与 cc.d.ts 的映射关系,后面看 Effect 与管线容易云里雾里。

路径 C:按问题查(随时)

不打算通读,只在遇到具体问题时翻对应章节。下节「常见问题速查」就是为这条路准备的。

贯穿项目:《方块冲刺》(深化形态)

卷三沿用卷二那套工程设定,不得前后矛盾:工程名 block-dash、包名 com.example.blockdash、设计分辨率 960 × 540(fitHeight + SHOW_ALL)、目标平台 H5 / 微信小游戏 / 原生、分包 bundle-levels、存档键 blockdash.save.v1。

卷三在这套设定上加深,新增的关注点固定为:

项卷三里的取值
引擎版本Cocos Creator 3.8.8(全书锁定;源码引用须标 cocos/cocos-engine tag 3.8.8)
引擎源码GitHub cocos/cocos-engine,cocos/ 下按 2d/ 3d/ animation/ physics/ audio/ rendering/ 分层
Effect 文件assets/effects/*.effect,材质 assets/materials/*.mtl
原生工程native/engine/{android,ios}/,JSB 绑定在 native/engine/common/
构建配置settings/v2/packages/builder.json、engine.json(模块裁剪)
性能基线沿用卷二 13.3 定的帧预算:60 FPS → 16.6 ms/帧;中低端机 30 FPS → 33.3 ms/帧

全书共用这一套设定,不得前后矛盾。 卷三尤其要守住版本口径:凡是引用源码的地方,都按 3.8.8 这个 tag 核对。

可验证口径(与卷二不同,重要)

卷二说清「主要战场在编辑器里」;卷三在此之上多了一层——引擎源码引用。所以三层的边界要划得更细:

层卷三里的内容能否验证怎么验证
L2Cocos 组件脚本(import { X } from 'cc')能真做类型检查tsc --noEmit 对 @cocos/creator-types@3.8.8 检查
L3工程文件(.effect / .mtl / .scene / 构建配置)不能命令行复现结构校验;正文每处都显式标注「需 Cocos Creator 3.8 编辑器打开」
L1纯逻辑代码(内存模型、缓存淘汰、采样统计等)能真跑Node + vitest 单测,这部分与引擎无关
L0引擎源码片段(cocos/cocos-engine 3.8.8 的 .ts / .cpp)可核对来源每处都标文件路径与版本;核不到的一律不写

这意味着什么? 本卷里凡 .effect、.mtl、构建配置这类片段,你没法复制粘贴就跑起来——它们必须由编辑器导入或引擎编译器处理。凡写「引擎里 XXX 是这样实现的」,都会给出文件路径 + 版本;本书宁可只写 cc.d.ts 能证明的 API 行为,也不凭记忆编造源码。凡是能写成组件脚本(L2)或纯逻辑(L1)的地方,就写成能验证的形式。这样每一段代码都至少有一层可验证性。

版本与技术口径

项版本说明
Cocos Creator3.8.8全书锁定,对应 @cocos/creator-types@3.8.8
引擎源码cocos/cocos-engine tag 3.8.8源码引用一律以此为准
Node.js26.5.0只做 TypeScript 类型剥离,因此脚本限可擦除语法
TypeScript7.0.2组件脚本使用;禁 enum / namespace / 构造函数参数属性
原生工具链Android SDK / Xcode 当前稳定版原生构建与 JSB 章节会说明版本要求

关于「可擦除语法」:Cocos 的脚本编译链只剥离类型,所以 enum、namespace、构造函数参数属性这类「需要生成运行时代码」的写法不要用。本书一律用 const 对象 + as const 代替 enum。

全书结构

全书 11 章分四个部分,每章 3 节。此外有 1 篇目录(本页)。序与前言见卷一。

第一部分:引擎与渲染管线(第 1–3 章)

先把引擎的骨架看清楚,再进入渲染这条最粗的主线。

节标题一句话
1.1引擎分层与源码结构引擎由哪些层组成、各自职责
1.2启动流程与主循环从 main 到每帧 update 的路径
1.3从 cc.d.ts 读引擎 API 版图用类型声明反推引擎能力边界
2.1渲染管线与自定义管线引擎默认管线与可插入点
2.2材质与 Effect 体系材质、Effect、Pass 的关系
2.3渲染批次与合批机制合批为什么会被打断
3.1Cocos Effect 语法与编译CCEffect / CCProgram 的写法
3.2改造内置着色器从内置 Effect 改出你要的效果
3.3后处理与全屏特效全屏 Pass 与渲染纹理的用法

第二部分:高级渲染与子系统(第 4–6 章)

渲染的进阶话题,以及物理与动画这两个重子系统的内部。

节标题一句话
4.12D 光照与法线2D 光照的法线与贴图准备
4.2阴影与光照贴图阴影投射与光照贴图的取舍
4.3自定义装配与渲染纹理用 RenderTexture 做装配与镜像
5.1内置物理与 Box2D 后端物理后端选择与差异
5.2物理调试与性能调试绘制与物理开销定位
5.3自定义碰撞与查询射线、点查与自定义碰撞逻辑
6.1动画系统内部与求值关键帧怎么求值成当前姿态
6.2骨骼动画与蒙皮骨骼、蒙皮与批处理的关系
6.3动画性能与内存动画的 CPU 与内存代价

第三部分:性能、原生与定制(第 7–9 章)

把机制变成可量化的优化,再走到原生与引擎定制。

节标题一句话
7.1内存模型与 GC谁在占内存、GC 什么时候跑
7.2纹理、显存与资源预算纹理格式、显存与预算表
7.3性能剖析与优化闭环从采样到定位到验证的闭环
8.1原生平台与 JSBJS 与原生互通的机制
8.2原生插件与三方 SDK 接入把三方 SDK 接进引擎
8.3多线程与 Worker把重活挪出主线程
9.1拉取与编译引擎源码从源码构建一份引擎
9.2自定义引擎与模块裁剪裁掉用不到的功能、改一段实现
9.3引擎升级策略版本升级的评估与迁移

第四部分:架构与收官(第 10–11 章)

把机制沉淀成架构,再横向看整个引擎生态。

节标题一句话
10.1ECS 与数据驱动架构数据驱动的组织方式与适用边界
10.2大型项目模块化大工程怎么分模块、控依赖
10.3工程规范与静态检查用工具把规范钉死
11.1跨引擎对照:Cocos / Godot / Phaser / Defold四款引擎的核心差异
11.2选型方法与迁移成本按项目特征选引擎
11.3全景回顾与展望回顾与后续方向

八周学习计划

按路径 A 走,一个参考排期:

周次章节产出
第 1 周第 1 章看清引擎分层、主循环与 cc.d.ts 版图
第 2 周第 2–3 章理解渲染管线与 Effect 体系,会改着色器
第 3 周第 4 章2D 光照、阴影与 RenderTexture
第 4 周第 5–6 章物理与动画子系统的内部与调优
第 5 周第 7 章内存与性能的量化与闭环
第 6 周第 8–9 章原生互通与引擎定制裁剪
第 7 周第 10 章架构与工程规范落地
第 8 周第 11 章跨引擎对照与选型判断

常见问题速查

你遇到的问题去看
不知道某个 API 到底存不存在1.3 从 cc.d.ts 读引擎 API 版图
想知道每帧引擎都干了什么1.2 启动流程与主循环
Draw Call 降不下来、合批总被打断2.3 渲染批次与合批机制
想改内置材质但不知从哪下手3.2 改造内置着色器
想加全屏滤镜 / 后处理3.3 后处理与全屏特效
2D 光照效果不对4.1 2D 光照与法线
物理碰撞表现和预期不符5.1 内置物理与 Box2D 后端
要做射线检测或区域查询5.3 自定义碰撞与查询
骨骼动画一多就掉帧6.3 动画性能与内存
内存一直涨、GC 卡顿7.1 内存模型与 GC
显存吃紧、纹理太大7.2 纹理、显存与资源预算
掉帧但不知道瓶颈在哪7.3 性能剖析与优化闭环
要接一个原生三方 SDK8.2 原生插件与三方 SDK 接入
主线程被重计算卡住8.3 多线程与 Worker
包体太大想裁剪引擎9.2 自定义引擎与模块裁剪
想升级引擎版本但怕踩坑9.3 引擎升级策略
在几款引擎之间做选型11.2 选型方法与迁移成本

学完之后你能做什么

走完全书,你应该具备这几项能力——它们也是本卷隐含的验收标准:

  • 读得懂 cc.d.ts:拿到一个不确定的 API,知道去类型声明里核对,而不是靠猜或搜二手博客。
  • 说得清渲染为什么慢:能从 Draw Call、合批打断、材质切换、后处理开销几个角度定位,而不是笼统地说「渲染慢」。
  • 改得动引擎:知道怎么从源码构建一份引擎、怎么裁剪模块、怎么在可控范围内改一段实现并评估代价。
  • 做得出架构判断:面对一个新项目,能判断该不该上 ECS、模块怎么分、依赖怎么控。
  • 选得对引擎:能按项目特征在 Cocos / Godot / Phaser / Defold 之间做有依据的取舍,并估算迁移成本。

这些能力无法只靠读获得,本卷的每一节都尽量给出可验证的代码或可核对的源码路径,方便你边读边试。

相关阅读


准备好了就翻开第 1 章 1.1 引擎分层与源码结构 开始。若还没读卷二,建议先看《Cocos 游戏开发实战》目录 。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「cocos」更多文章

  1. 《Cocos 游戏联机实战》9.3 延迟补偿与体验权衡
  2. 《Cocos 游戏联机实战》9.2 网络状态 UI 与提示
  3. 《Cocos 游戏联机实战》9.1 同步表现与插值动画