《Cocos 游戏开发实战》14.3 原生 Android / iOS 构建
原生端是《方块冲刺》三端发布的最后一站,也是最重的一站:构建出来的是真正的 Android Studio 与 Xcode 工程,要管包名、ABI、签名、证书。本节给出两端的构建面板取值,讲清原生工程的结构与打包流程,附上可编译的平台判定脚本与三端差异对照表,最后把三端产物收进同一份发布清单。
tag
原生端是《方块冲刺》三端发布的最后一站,也是最重的一站:构建出来的是真正的 Android Studio 与 Xcode 工程,要管包名、ABI、签名、证书。本节给出两端的构建面板取值,讲清原生工程的结构与打包流程,附上可编译的平台判定脚本与三端差异对照表,最后把三端产物收进同一份发布清单。
微信小游戏是 H5 的裁剪形态,但限制更多:主包有体积上限、必须配远程服务器地址、还得在微信开发者工具里预览。本节把构建面板上的微信专属选项逐项给出取值,讲清 wechatgame 产物的结构,给出可直接编译的 wx 存档与登录桥接脚本,并整理主包超限与常见报错的处置办法。
第 13 章把性能调好之后,该把它构建成能发布的产物了。本节把 H5 构建面板上的每一项都给出实际取值——平台 Web Mobile、主包压缩类型 Merge Deps、MD5 Cache 勾选、Source Maps 关闭,讲清 build/web-mobile 的目录结构,给出静态托管的缓存与压缩策略,并附上可编译的平台判定与首屏预加载脚本。
《方块冲刺》要在三端保存同一份进度,而三端的存储 API 各不相同:微信走 wx.setStorageSync、H5 走 localStorage、原生走 sys.localStorage。本节先定存档数据模型,再用一层 KV 适配器把差异收敛到一处,最后写一条可单测的版本迁移链,让老玩家的 v1 存档安全升到 v3。
把 1.1 的规格落到磁盘:讲清 Cocos 工程在文件系统里长什么样(assets 进版本库、library/temp/local 不进),定下 assets/ 的六层资源分层与 scripts/ 的 core/game/ui/platform 四层职责,给出可单测的路径常量,并用 resources 演示加载 configs/levels.json。
跑到第 9 章,《方块冲刺》的角色还在用代码改 scale 假装在动。本节把动画交还给编辑器:用 Animation 组件与 AnimationClip 资源做一条 run 剪辑,讲清关键帧、采样率与 wrapMode 的取舍,给出 .anim 文件在编辑器里打开的样子,并写一个可编译的 crossFade 播放组件。
本节把《方块冲刺》的启动链路拆成引擎初始化、boot 场景加载、首包资源预取三个阶段,给出 BootFlow 组件的完整实现、加权进度条算法与微信小游戏的启动约束,并说明 boot.scene 在编辑器里打开时会看到哪些节点、挂哪些组件、属性面板显示什么值。
装饰器是 Cocos 组件脚本的地基:@ccclass 把类注册进序列化器,@property 把字段暴露到属性面板。本节讲清四个基础类型标注为什么必须显式写、引用类型与数组的默认值约定、erasable syntax 下用 Enum() 替代 TS enum,以及 tooltip/range/visible/formerlySerializedAs 等选项的面板效果,并给出挂组件后应显示的值。
前两节分别压了 Draw Call 与纹理内存,但优化到底有没有用、下一刀该砍哪里,得靠数据说话。本节把 16.7 ms 的帧预算切成逻辑、物理、渲染、呈现四段,逐字段讲透 Cocos Profiler 的统计面板,给出帧时间采样与分段计时的可编译脚本,并落到低端机限帧降级的工程实现。
合批解决的是每帧提交次数,纹理内存决定的却是小游戏能不能启动。本节先算清一张纹理占多少内存,再对照 iOS、Android、H5 与微信小游戏各自的压缩格式,讲透 addRef/decRef 与 release 的引用计数规则,给出关卡图集加载与释放的可编译脚本,最后用对象池压住每帧 GC 抖动。
第 12 章把广告和激励视频接进《方块冲刺》后,跑酷主场景的 Draw Call 已经爬到 180 上下。本节从一次 Draw Call 的代价讲起,拆开 Cocos Creator 3.8 自动合批的三个前提,给出自动图集与 packable 的工程配置,用一段可编译的组件脚本把 Draw Call 采出来,最后列出打断合批的五类常见原因与逐条处置办法。
卷二不再自己造引擎,而是用 Cocos Creator 3.8 把《方块冲刺》做成能真发布的产品。本节锁定全书工程设定(工程名 block-dash、960×540、三端发布、bundle-levels 分包),给出功能与非功能需求、用例清单,把验收标准写成可测的纯 TypeScript 判定函数,并用 sys.Platform 落实平台降级矩阵。
Zig 编译快、无 GC、可交叉编译到全平台,非常适合独立游戏开发。本文以 raylib 为渲染层,讲解游戏循环与固定时间步、数据导向的 ECS 架构设计与实现、组件存储布局、实体生命周期、碰撞检测、资源与音频管理,以及多平台打包发布流程。
回顾 mini2d 从第 1 章到第 18 章的完整演进路径,把它拆成 17 个模块对应的 17 个主题,总结五条贯穿全卷的核心收获:引擎不是黑盒、分层、可测试性、确定性与数据驱动,并给出继续深入的方向与卷二《Cocos 游戏开发实战》的衔接。
调手感时最烦的就是「改个数 → 保存 → 刷新 → 重玩到那一关」,一晚上全耗在等待上。本节给 mini2d 做一套游戏内开发者控制台:用命令注册表加参数解析,实现改数值、跳关、无敌、加速时间,并把执行结果实时回显在屏幕上,且只在开发模式启用。
把自研运行时 mini2d 的每个模块映射到 Cocos Creator 3.8 的对应物,给出「先搬纯逻辑、再换外壳」的三步迁移流程,并逐条拆解四类高频陷阱:坐标系差异、生命周期顺序、资源引用方式与序列化,附一份可勾选的迁移检查清单,帮自研运行时平滑过渡到引擎工程。
玩家说「有点卡」,你打开游戏却觉得还行——因为卡顿是瞬时的,靠肉眼抓不住。本节给 mini2d 写一套性能剖析:用 performance.now() 采样帧耗时,用滚动平均与 P95/P99 百分位判断手感,用 performance.memory 与分配计数区分 GC、绘制、逻辑三类掉帧真凶。
把《方块冲刺》的 mini2d 版与 Cocos Creator 3.8 版并排放在一起,逐项对照帧循环、渲染、输入、物理、动画、资源、UI、存档与构建九组实现,用两张总表回答哪些活是引擎替你干的、哪些必须自己干,作为全卷方法论收口,并衔接迁移清单与实战卷。
碰撞检测明明写了却总穿模、跳跃高度对不上、A* 路径绕远路,光看画面根本看不出原因。本节给 mini2d 加一层记录式调试渲染器,把碰撞盒、触发器、速度向量、寻路路径与状态标签按层画出来,用数字键独立开关,只在开发模式启用、生产构建整段摇树消除。
对照 Cocos Creator 3.8 的构建面板:逐条讲平台选择、发布路径、资源压缩、MD5 Cache 与 Bundle 分包选项,展示 web-mobile / 微信小游戏 / 原生三类产物的目录结构,再用一段 L2 运行时代码演示平台判定与 Bundle 加载,最后把 Cocos 构建流程与 mini2d 的 Vite 管线做成一张对照表。