目录
欢迎来到《Cocos 游戏开发实战》。如果说卷一《入门》是「把引擎拆开看」,这一卷就是把零件装回一台能出货的机器:用 Cocos Creator 3.8 把《方块冲刺》做成一个真的能发布到 H5、微信小游戏和原生平台的产品。
卷一结束时,你已经手写过帧循环、渲染、输入、碰撞、存档,也对照过 Cocos 里对应的模块。但「知道每个模块怎么工作」和「交付一个上线产品」之间,还隔着很长一段:编辑器里怎么组织场景与预制体、资源怎么分包与热更、三端各自的限制在哪、性能预算怎么守、上线之后怎么灰度与回滚。 这一段没有多少理论,全是工程决定——而工程决定做错了,代价往往要到上线后才显形。
本页给出全书的阅读路线。你可以从第 1 章 1.1 开始顺序通读,也可以先看下面的三条路径,挑一条最合你胃口的走法。
这一卷写给谁
| 读者 | 现状 | 读完能拿到什么 |
|---|---|---|
| 读完卷一、想做出成品的人 | 懂机制,但没走过一次完整交付 | 从工程搭建到三端发布的完整流程与检查清单 |
| 有 Unity / Godot 上线经验、转 Cocos | 熟悉产品化流程,不熟悉 Cocos 的工程体系 | Cocos Creator 的 Bundle、分包、热更与多端构建细节 |
| 前端 / 小游戏开发者 | 熟 Web 与小游戏宿主环境,缺游戏工程经验 | 资源管线、性能预算、平台 SDK 接入的落地写法 |
| 独立开发者 / 小团队 | 一个人要干完策划到运维 | 一套可直接照做的小游戏交付模板与踩坑清单 |
前置知识:读完卷一,或已具备等价基础(看得懂 TypeScript 组件脚本、知道场景图与资源引用是什么)。需要本机安装 Cocos Creator 3.8——这一卷的大部分操作发生在编辑器里,命令行无法复现,这一点在下面的「可验证口径」里会讲清楚。
三条阅读路径
路径 A:完整产品线(约 10 周)
最完整的一条。按顺序走完 18 章,每一章都在同一个 Cocos 工程上叠加功能,最后一章产出可发布的包。
第 1–3 章(工程与组件)→ 第 4–6 章(资源/流程/UI)→ 第 7–12 章(玩法与变现)
→ 第 13–15 章(性能与多端)→ 第 16–18 章(质量与交付)
适合准备真做一个上线产品的人。第 1 章定的验收标准会在第 18 章的发布检查清单里逐条兑现——不要跳过第 1 章。
路径 B:只解决具体问题(约 4 周)
已经有工程、只想补齐某一块的话,按下面的分组跳读:
工程基础:1 → 2 → 3 → 4 → 5
界面与玩法:6 → 7 → 8 → 9 → 10
系统与变现:11 → 12
性能与发布:13 → 14 → 15
质量与上线:16 → 17 → 18
每组内部是递进的,组之间可以独立看。唯一建议不要跳的是第 13 章(性能优化)——性能预算定得太晚,前面写的东西可能要推倒重来。
路径 C:按问题查(随时)
不打算通读,只在遇到具体问题时翻对应章节。下节「常见问题速查」就是为这条路准备的。
贯穿项目:《方块冲刺》(产品形态)
卷一是让《方块冲刺》在 mini2d 上「长大」;卷二是让它变成一个商品。同一款游戏,卷二的形态固定为:
| 项 | 卷二里的取值 |
|---|---|
| 工程名 / 包名 | block-dash / com.example.blockdash |
| 设计分辨率 | 960 × 540,适配策略 SHOW_ALL |
| 目标平台 | H5、微信小游戏、Android / iOS 原生 |
| 资源分层 | assets/ 下分 scenes/ prefabs/ textures/ audio/ configs/ scripts/ |
| 脚本分层 | assets/scripts/ 下分 core/(纯逻辑)game/(玩法)ui/ platform/ |
| 核心玩法 | 横版自动跑 + 跳跃 + 金币收集 + 三种道具(加速 / 无敌 / 磁铁) |
| 关卡数据 | configs/levels.json,含 obstacles / coins / goalX / speed |
| 分包 | 首包只含启动场景与主 UI,关卡资源进 bundle-levels |
全书共用这一套设定,不得前后矛盾。 这不是形式主义:真实项目里最贵的 bug 就来自「文档写 960×540、代码里按 1280×720 算」这类不一致。
可验证口径(与卷一不同,重要)
卷一的卖点是「代码真跑」;卷二的主要战场在编辑器里,能命令行验证的部分少得多。所以先如实说清楚:
| 层 | 卷二里的内容 | 能否验证 | 怎么验证 |
|---|---|---|---|
| L2 | Cocos 组件脚本(import { X } from 'cc') | 能真做类型检查 | tsc --noEmit 对 @cocos/creator-types@3.8.8 检查 |
| L3 | 工程文件(.scene / .prefab / .meta / settings/v2/packages/*.json) | 不能命令行复现 | 结构校验;正文每处都显式标注「需 Cocos Creator 3.8 编辑器打开」 |
| L1 | 纯逻辑代码(数值表校验、存档迁移、协议编解码) | 能真跑 | Node + vitest 单测,这部分与引擎无关 |
这意味着什么? 卷二里凡是 .scene、.prefab、.meta 这类片段,你没法复制粘贴就跑起来——它们必须由编辑器生成或导入。本书的做法是:给出文件内容与结构,并写清「在编辑器里打开会看到什么、点哪几下能复现」。凡是能写成组件脚本(L2)的地方,就写成脚本;凡是纯逻辑(L1),就写成能单测的纯函数。这样每一段代码都至少有一层可验证性。
版本与技术口径
| 项 | 版本 | 说明 |
|---|---|---|
| Cocos Creator | 3.8.8 | 全书锁定,对应 @cocos/creator-types@3.8.8 |
| Node.js | 26.5.0 | 只做 TypeScript 类型剥离,因此脚本限可擦除语法 |
| TypeScript | 7.0.2 | 组件脚本使用;禁 enum / namespace / 构造函数参数属性 |
| 微信开发者工具 | 稳定版 | 微信小游戏构建与真机预览 |
| Android SDK / Xcode | 当前稳定版 | 原生构建;具体版本见第 14 章 |
关于「可擦除语法」:Cocos 的脚本编译链同样只剥离类型,所以 enum、namespace、构造函数参数属性这类「需要生成运行时代码」的写法不要用。本书一律用 const 对象 + as const 代替 enum。
全书结构
全书 18 章分六个部分,每章 3 节。此外有 1 篇目录(本页)。序与前言见卷一。
第一部分:工程与组件(第 1–3 章)
先把「要做什么」定死,再把工程骨架搭起来。
| 节 | 标题 | 一句话 |
|---|---|---|
| 1.1 | 需求、用例与验收标准 | 先写清「做完什么样算完成」 |
| 1.2 | 工程结构与目录约定 | 目录分层与命名约定定死 |
| 1.3 | 版本管理与协作流程 | .meta 要不要进版本库 |
| 2.1 | 场景、节点与预制体 | 什么该是预制体,什么该是节点 |
| 2.2 | 属性面板与序列化 | 面板上的值写进了哪个文件 |
| 2.3 | 资源导入与 .meta | .meta 里的 UUID 与导入设置 |
| 3.1 | @ccclass / @property 与类型系统 | 让编辑器认识你的字段 |
| 3.2 | 生命周期与执行顺序 | onLoad / start / update 的次序 |
| 3.3 | 组件通信与事件 | 事件总线与节点冒泡的取舍 |
第二部分:资源、流程与界面(第 4–6 章)
工程骨架之上,把资源管好、把流程串起来、把界面搭出来。
| 节 | 标题 | 一句话 |
|---|---|---|
| 4.1 | 资源目录与 Bundle | Bundle 是资源的加载边界 |
| 4.2 | 动态加载与引用计数 | addRef / decRef 与自动释放 |
| 4.3 | 远程资源与热更 | 版本清单与增量更新 |
| 5.1 | 启动流程与首屏 | 从引擎启动到第一个可交互界面 |
| 5.2 | 场景切换与预加载 | 切换时的白屏与资源残留 |
| 5.3 | 常驻节点与全局管理 | director.addPersistRootNode |
| 6.1 | UI 层级与多分辨率适配 | Canvas 与 Widget 的适配链 |
| 6.2 | 列表与滚动容器 | ScrollView 与长列表复用 |
| 6.3 | 弹窗栈与多语言 | 弹窗管理与时序,文案外置 |
第三部分:玩法与表现(第 7–10 章)
从「能跑」到「好玩」。
| 节 | 标题 | 一句话 |
|---|---|---|
| 7.1 | 输入与角色控制 | 输入事件到角色状态 |
| 7.2 | 碰撞与关卡推进 | 碰撞分组与触发器 |
| 7.3 | 手感调优与参数化 | 把数值抽出来反复试 |
| 8.1 | 关卡编辑与配置表 | 关卡从编辑器搬到数据 |
| 8.2 | 数值表加载与校验 | 配置错在启动时就报出来 |
| 8.3 | 程序化关卡与难度曲线 | 种子 + 约束生成可玩关卡 |
| 9.1 | Animation 编辑器与动画剪辑 | 关键帧、事件帧与状态切换 |
| 9.2 | Tween 与程序动画 | 代码驱动的补间 |
| 9.3 | 粒子与骨骼动画 | 粒子与骨骼的适用边界 |
| 10.1 | 音频管理器与音效池 | AudioSource 复用与总线音量 |
| 10.2 | 多端音频限制 | 自动播放限制与首次交互解锁 |
| 10.3 | 震动、顿帧与打击感 | 反馈让操作「有分量」 |
第四部分:系统与变现(第 11–12 章)
存档、多语言、平台 SDK——产品化的必经环节。
| 节 | 标题 | 一句话 |
|---|---|---|
| 11.1 | 本地存档与版本迁移 | 存档版本号与迁移函数 |
| 11.2 | 云存档与冲突消解 | 两份存档怎么合并 |
| 11.3 | 多语言与字体 | 文案外置与中文字体子集 |
| 12.1 | 登录与分享 | 平台登录与分享调用时序 |
| 12.2 | 广告与激励视频 | 激励视频的完整状态机 |
| 12.3 | 内购与合规 | 支付流程与合规红线 |
第五部分:性能与多端(第 13–15 章)
让它跑得动、包得下、发得出。
| 节 | 标题 | 一句话 |
|---|---|---|
| 13.1 | Draw Call 与合批 | 合批条件与打断原因 |
| 13.2 | 纹理、内存与 GC | 显存预算与对象池 |
| 13.3 | Profiler 与帧预算 | 16.6ms 怎么分 |
| 14.1 | H5 构建与部署 | 构建面板参数与静态部署 |
| 14.2 | 微信小游戏构建 | 宿主环境限制与适配层 |
| 14.3 | 原生 Android / iOS 构建 | 原生工程生成与签名打包 |
| 15.1 | 分包策略与首包体 | 首包塞什么、分包放什么 |
| 15.2 | 远程资源与 CDN | 资源托管与缓存策略 |
| 15.3 | 启动耗时优化 | 首屏时间的构成与削减 |
第六部分:质量、上线与交付(第 16–18 章)
发布不是终点,是可回滚的起点。
| 节 | 标题 | 一句话 |
|---|---|---|
| 16.1 | 逻辑单测与类型校验 | 对 cc.d.ts 做类型门禁 |
| 16.2 | 自动化冒烟与截图比对 | 每次构建自动跑一遍 |
| 16.3 | 崩溃上报与埋点 | 线上问题看得见 |
| 17.1 | 灰度与回滚 | 先给小部分人用 |
| 17.2 | 热更与线上修复 | 不改包体修线上问题 |
| 17.3 | 活动配置与数据看板 | 运营改动不动代码 |
| 18.1 | 发布检查清单 | 逐条对照 1.1 的验收标准 |
| 18.2 | 复盘:Cocos 工程里最容易踩的坑 | 本卷讲过的问题归纳 |
| 18.3 | 进入高级卷 | 回顾与衔接 |
十周学习计划
按路径 A 走,一个参考排期:
| 周次 | 章节 | 产出 |
|---|---|---|
| 第 1 周 | 第 1–2 章 | 验收标准 + 可运行的工程骨架 |
| 第 2 周 | 第 3–4 章 | 组件体系 + Bundle 资源管线 |
| 第 3 周 | 第 5–6 章 | 启动流程 + 主界面与弹窗 |
| 第 4 周 | 第 7–8 章 | 可玩的核心循环 + 数据驱动关卡 |
| 第 5 周 | 第 9–10 章 | 动画特效 + 音频与打击感 |
| 第 6 周 | 第 11–12 章 | 存档与多语言 + 平台 SDK 接入 |
| 第 7 周 | 第 13 章 | 性能优化到帧预算内 |
| 第 8 周 | 第 14–15 章 | 三端构建 + 分包与首包 |
| 第 9 周 | 第 16–17 章 | 自动化质量门禁 + 灰度上线 |
| 第 10 周 | 第 18 章 | 发布检查清单逐条兑现 |
常见问题速查
| 你遇到的问题 | 去看 |
|---|---|
| 面板上改的值重启后没了 | 2.2 属性面板与序列化 |
| 队友拉代码后场景引用全红 | 2.3 资源导入与 .meta 、1.3 版本管理 |
@property 的字段在面板上不显示 | 3.1 @ccclass 与 @property |
| 组件初始化顺序不对、报 null | 3.2 生命周期与执行顺序 |
| 切场景后内存一直涨 | 4.2 动态加载与引用计数 |
| 切场景白屏很久 | 5.2 场景切换与预加载 |
| 高分屏上 UI 位置错乱 | 6.1 UI 适配 |
| 长列表滚动卡顿 | 6.2 列表与滚动容器 |
| 跳跃手感发飘 | 7.3 手感调优 |
| 配置表写错要到运行时才炸 | 8.2 数值表加载与校验 |
| 手机上没声音 | 10.2 多端音频限制 |
| 老玩家的存档读不出来 | 11.1 本地存档与版本迁移 |
| 激励视频回调漏发奖励 | 12.2 广告与激励视频 |
| Draw Call 太高 | 13.1 Draw Call 与合批 |
| 微信小游戏包超 4MB | 15.1 分包策略与首包体 |
| 首屏启动太慢 | 15.3 启动耗时优化 |
| 线上出问题但没法改包 | 17.2 热更与线上修复 |
相关阅读
- 游戏开发专题 — 站内游戏开发的专题文章总入口
- 游戏引擎专题 — 引擎架构与渲染管线的专题讨论
- 图形学专题 — 渲染管线与图形 API 的系统文章
- TypeScript 专题 — 类型系统与工程实践
- 书稿专题 — 全部在线电子书与创作手记
准备好了就翻开第 1 章 1.1 需求、用例与验收标准 开始动手。若还没读卷一,建议先看《Cocos 游戏开发入门》目录 。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。