跳转至

Ludo Atlas · 引擎轨道 · Cocos

引擎轨道。定位:中文生态的跨平台引擎路线,TypeScript 脚本与一体化编辑器工作流,主战场在手游、微信/抖音小游戏与 Web;2D 是强项,3D 在持续补齐。 配套:《技术实现手册》·《小游戏开发手册》·《美术与音频手册》·《全平台上架手册》。


1. 定位与选型

Cocos 是国产跨平台引擎,现役主力是 Cocos Creator:一套工程同时导出 Android、iOS、Web、微信/抖音小游戏与各硬件渠道的快游戏。脚本语言以 TypeScript 为主(官方推荐,也兼容 JavaScript),工作流围绕一体化编辑器展开:场景、资源、脚本、构建都在编辑器里完成。编辑器免费使用,引擎运行时开源,遇到引擎层面的问题可以读源码、打补丁。

2D 与 3D 的现状要分开看。2D 是主场:渲染、图集、UI、骨骼动画、瓦片地图都成熟,小游戏适配层的积累也在这条线上。3D 可用并持续补齐,风格化、轻中度与 2D/3D 混合的项目已经跑得动,但工具链深度、教程密度与高端案例跟 Unity 相比有明显差距,重度写实类项目不要押注。更早的 C++ 引擎线(Cocos2d-x)仍有存量项目维护,新项目从 Creator 起步即可。

它最顺手的三块地盘:

地盘 为什么合适
微信/抖音小游戏 小游戏生态里份额最大:构建面板原生支持各平台导出,分包、远程资源与平台调试链路成熟
2D 手游与 H5 长期积累换来的 2D 生产力:渲染、图集、UI、Spine 与 DragonBones 动画、瓦片地图开箱可用
Web 与营销互动 网页基因深,包体小、启动快,活动页、互动展示与轻量游戏是常见落点

选型对照(把「要什么」写清楚就够):

场景 Cocos Godot Unity
微信/抖音小游戏 首选:原生导出链路,案例最多 支持较弱,社区方案少 需官方转换方案,包体与插件兼容逐项评估
2D 手游与国内渠道 首选:中文文档与社区完整 可用:轻量、开源 生态最厚,工程也更重
轻度 3D(风格化、策略、卡牌) 可用:2D/3D 一体,中小体量够用 可用:3D 在补课 成熟:工具链与素材最多
重度 3D、写实大世界、主机 不推荐 不推荐 首选(或 Unreal)
开源可定制 运行时开源,编辑器闭源 全栈开源 闭源
团队是 C# 背景 需要转 TypeScript 可用 C# 无迁移成本

一句话取舍:发布目标里只要有小游戏,先把 Cocos 放进第一轮评估;目标是重度 3D 或主机,直接看别的轨道。

2. 生态与工程结构

生态由四块拼成:官方文档(中文优先、更新及时)、官方示例与模板、插件与资源商店(Cocos Store)、社区论坛。预期要摆正:商店规模与素材丰富度比 Unity 生态小一截,很多能力要按「商店先找、社区开源项目再看、实在没有自研」的顺序解决;引入第三方插件前查最近更新与 issue 状态。

标准工程的主干:

路径 内容 约定
assets/ 场景、预制体、纹理、音频、脚本 内容主体,编辑器按资源库统一管理
extensions/ 编辑器扩展(插件) 团队自研工具放这里
本地产物目录 资源导入缓存与构建产物 不进版本库,官方模板默认忽略

工程组织的惯用法:

  • 按领域分目录(玩法、系统、界面各成块),脚本与它用的资源就近放,不按文件类型大锅炖。
  • 资源 Bundle 按目录划分,粒度由加载频次与依赖关系决定;resources 目录内可动态按路径加载,其余资源尽量用序列化引用。
  • 场景与预制体是文本序列化资源,diff 与合并都痛苦;多人协作要拆小预制体,避免同一文件并行改动。
  • 资源改名走编辑器(引用自动同步),不要在文件系统里手工重命名或移动,否则引用链断裂。

3. 核心工作流

3.1 编辑器工作流

日常动线:资源管理器导入素材,层级管理器搭节点树,属性检查器调参数,脚本以 TypeScript 组件的形式挂到节点上,可复用的部分沉淀成预制体。组件通过属性把参数暴露给检查器,策划可以直接调;逻辑与表现分家,界面与玩法各自成模块。

  • 编辑器内预览解决「对不对」,真机预览解决「卡不卡、点不点得动」,两者都要跑。
  • 改动即预览是效率来源;把热重载友好的写法(小模块、少全局状态)当纪律。
  • 发布前真机过一遍:触摸、刘海屏安全区、低端机内存,这三项编辑器都测不出来。

3.2 构建与发布链路(微信/抖音小游戏)

从工程到小游戏,链路是标准化的:

  1. 构建发布面板选择平台(微信小游戏、抖音小游戏、各硬件渠道快游戏等),设置分包与远程资源地址。
  2. 构建产出平台工程目录(含平台配置文件与开放数据域工程模板),编辑器可唤起对应开发者工具,或手动用工具打开构建产物。
  3. 在开发者工具里预览与真机调试,落实性能与内存;通过后上传代码。
  4. 平台侧提审与发布(资质、审核口径见《小游戏开发手册》)。

构建选项里值得先弄懂的几项:

选项 作用
主包与分包 控制首包体积的主要手段,主包只留启动必需
远程资源服务器 低优先级资源放 CDN,引擎负责下载与缓存版本管理
引擎原生代码分包、引擎插件 引擎自身代码后置或改用平台共享插件,进一步压首包
开放数据域工程模板 关系链类玩法(好友榜、互动)的隔离运行环境,按需生成

平台能力不是一个模子,投放前按目标平台核对:

能力 微信小游戏 抖音小游戏 硬件渠道快游戏
登录 平台账号静默登录 平台账号登录 各渠道账号体系
关系链 开放数据域(好友榜等) 开放数据域 不适用
传播 好友与群分享 短视频、直播挂载 渠道内推荐位
变现 广告组件与虚拟支付 广告组件与虚拟支付 广告与渠道支付

另有两处环境差异要记住:微信小游戏的运行环境不等同浏览器,不支持 WebView,其余能力以平台开放接口为准;内存是小游戏最硬的约束,低端机上超限直接闪退,真机内存曲线比帧率更需要盯。

4. 关键系统惯用法

4.1 节点、组件与预制体

  • 一切皆节点,能力靠组件拼装;组合优先,别把继承链拉成族谱。
  • 预制体是复用单位:界面模块、敌人、子弹都要预制体化,改一处全项目生效。
  • 编辑器里能配的尽量在编辑器里配,脚本只写变化逻辑;数值参数集中管理,避免魔法数字散落。

4.2 脚本、事件与生命周期

  • 组件生命周期回调负责初始化、每帧更新与销毁清理;重逻辑放事件驱动,不要全塞进每帧更新。
  • 节点事件处理交互(触摸、点击),全局事件总线处理跨模块通知(成就、音效、界面刷新);事件层级要限深,超过两层就该拆模块。
  • 状态机、对象池、数据表这些架构件自己做:引擎给零件,不给成品框架(架构做法见《技术实现手册》)。

4.3 资源与加载

  • 动态加载走 resources 目录或 Asset Bundle;路径字符串集中成常量表,不散落各处。
  • 引擎按引用计数管理资源生命周期:谁持有谁负责;长驻资源与场景级资源分开管,切场景前后看一眼内存是否回落。
  • 预加载分级:首屏关键资源优先加载,次要资源分帧拉到后台。

4.4 UI、动画与物理

  • UI 用 2D 节点树加组件;设计分辨率与适配策略在项目设置里一次定好,多机型按安全区验收。
  • 2D 动画两条主力路线:序列帧(便宜、可控)与骨骼动画(省资源、表现力强,Spine、DragonBones 都能导);补间动画管界面动效。
  • 2D 物理内置、开箱可用;3D 物理更重(走 WebAssembly 模块),先问「玩法是否真的需要物理」,再决定开不开。

5. 性能与优化要点

小游戏与低端机是性能的基准场景,预算优先级固定:内存第一、渲染第二、包体第三。

方向 要点
内存 盯真机曲线;纹理尺寸与压缩格式分平台处理;切场景验证回落;对象池兜住峰值
渲染 同图集、同材质才能合批;控制穿插打断;减少透明叠加与满屏粒子;图集按用量切分
脚本 节点引用预先缓存,禁止每帧查找;减少每帧分配与字符串拼接,降低 GC 抖动;事件监听成对移除
启动 首场景瘦身;功能裁剪(项目设置里剔掉用不到的系统模块);分包与远程资源把首包压进限制之内
物理 按需开启;碰撞分组过滤;简化碰撞形状;必要时降低物理频率换流畅

方法论只有一句:先测量再动手,编辑器数据只当参考,结论以真机与目标机型分档实测为准(工具清单见《技术实现手册》)。优化前后各记录一组数据,没有数据支撑的优化一律不做。

6. 学习路线

三个阶段,每段有验收物:

阶段 做什么 验收物
入门 官方文档与官方示例工程;做 2D 小游戏,覆盖移动、碰撞、UI、存档 能独立在编辑器里搭出一个完整可玩的小游戏
发布 走一遍小游戏全链路:分包、真机调试、提审、上线 一个真实上线的微信或抖音小游戏
进阶 3D 入门、编辑器扩展、性能方法论;读引擎源码 一份性能优化复盘;能写小工具解决团队重复劳动

从 Unity 或 Godot 转过来的人:概念几乎一一对应(节点对 GameObject、预制体对 Prefab、组件对 MonoBehaviour),对象池、状态机、事件这些架构能力全额迁移;要新学的是 TypeScript 的类型系统、编辑器工作流的细节,以及小游戏环境的约束集。

资源入口:官方文档与示例工程优先;视频教程注意时效,按旧代 API 讲解的很多。社区与商店入口见《资源大全》。

7. 常见坑

  1. 把大版本换代当普通升级:Creator 的大版本换代是重构级的,编辑器组织与脚本 API 都要改,三方插件的跟进经常滞后;升级前冻结依赖、列回归清单,逐项过官方迁移指引。
  2. 照抄过时教程:网上大量教程按旧代 API 写成,能编译不代表行为正确;版本冲突时只认官方文档。
  3. 把插件商店当成熟生态用:规模小、质量参差,关键能力要有自研预案,引入前先看维护状态。
  4. 在小游戏里找原生能力:小游戏运行在平台的 JS 环境里,带原生代码的 SDK 与插件都用不了;先查目标平台的开放接口清单,再定方案。
  5. 只在编辑器与模拟器里测:内存闪退是低端机专属问题,上线前必须真机跑目标机型。
  6. 多人并行改同一个预制体或场景:文本序列化资源的冲突基本解不开;拆预制体、锁目录、错峰改。
  7. 首包失控:主包限制是硬约束,资源不做分包与远置,上线前必然返工(口径见《小游戏开发手册》)。
  8. 加载不管释放:引用计数不清零,切场景内存不回落;长驻资源显式标记,临时资源按作用域释放。
  9. 拿它硬做重度 3D:3D 在补齐,重度写实大世界不是它的战场;3D 项目先做切片验证再押注。
  10. iOS 支付照老教程绕:虚拟支付通道已打通,历史绕行方案属于违规,不要再采用。

延伸阅读