
读懂 Cocos Creator 的开源引擎新手如何 3 步摸清 cocos-engine 仓库结构【免费下载链接】cocos-engineCocos simplifies game creation and distribution with Cocos Creator, a free, open-source, cross-platform game engine. Empowering millions of developers to create high-performance, engaging 2D/3D games and instant web entertainment.项目地址: https://gitcode.com/GitHub_Trending/co/cocos-enginecocos-engine 是 Cocos Creator 编辑器的开源运行时引擎用 C 和 TypeScript 混合编写跑在 Windows、iOS、Android、Web 和微信、抖音等小游戏平台上。第一次打开这个仓库你会看到cocos/、native/、pal/、exports/一堆目录却不知道从哪里读起。这篇文章帮你画好阅读路径先认识项目定位再按优先级读核心目录最后跟着一条启动链路把引擎是怎么跑起来的讲明白。引擎是干什么的编辑器背后的运行时这个仓库是 Cocos Creator 的运行时框架。你在编辑器里搭好的场景、组件、材质真正在玩家设备上跑起来靠的就是这里的代码。它擅长两件事一是跨平台同一套代码能编译到桌面、移动、Web 和小游戏平台二是渲染能力GFX 图形层按平台自动选用 Vulkan、Metal 或 WebGL。要注意边界README 里明确写了引擎设计上是只作为必备运行时库天然与 Cocos Creator 编辑器集成不建议脱离编辑器单独使用。所以想改渲染、改平台适配、读源码学架构这个仓库很合适想拿它当独立框架从零搭游戏则不推荐。仓库地图按阅读优先级而不是目录字母表图是native/里 JSB 绑定层的架构图解释 C 底层如何与 TypeScript 层通信。这张图能帮你理解仓库里为什么一半代码是 C、一半是 TypeScript。先读 cocos/引擎大脑TypeScriptcocos/是引擎核心库每个子目录是一个功能模块按建议的阅读顺序cocos/game/启动链路主角。game.ts定义 Game 类director.ts定义 Director这是理解引擎生命周期的起点。cocos/core/数学、几何、事件、调度器、曲线等基础设施其他所有模块的地基。cocos/scene-graph/Node 与 Component 体系。你在游戏项目里最熟悉的Node、Component、Scene都在这里。cocos/asset/asset-manager 资源加载管线贴图、模型、音频怎么被读进内存。渲染三件套cocos/gfx/ 定义平台无关的图形抽象base/是接口webgl/、webgl2/、webgpu/是具体实现cocos/rendering/ 是渲染管线本体含 forward、deferred 两套内建管线cocos/render-scene/ 管理相机、光源等渲染场景数据。其余模块按需查2d/、ui/、animation/、physics/、spine/等命名和目录一一对应。再读 exports/ 和 pal/理解谁对外、谁适配平台exports/ 决定哪些模块对用户可见。docs/contribution/modules.md写得很清楚exports/下的才算公开模块游戏代码import的就是从这里出去的东西editor/exports/则只对编辑器可见。pal/ 是平台抽象层PALPlatform Abstraction Layer 的缩写。音频、输入、系统信息、屏幕适配在这里各有一份 Web 版和 native 版实现构建引擎时按目标平台二选一。看懂这一层你就明白了一套代码跑多个平台的 TypeScript 侧是怎么做的。最后看 native/C 半边天native/ 是 C 实现README 说底层基础设施、原生平台适配、渲染器和场景管理都写在这里以保证性能。目录里renderer/、platform/、scene/是重点bindings/负责 C 与 JS 的互调也就是上面那张架构图的内容。不写 C 的新手先了解它的存在和作用即可。可以先跳过的目录tests/用 jest 跑单元测试templates/是各平台工程模板editor/assets/存放引擎内建资源默认材质、字体、粒子纹理等。这些不影响你建立整体认知需要时再进。运行链路没有 main.ts但有一条清晰的启动路径很多人找启动文件这个仓库没有。它不是可执行程序构建产物被注入游戏项目的boot.js再由构建出的启动脚本调用game.run()开始。引擎内部的链路是Game 启动cocos/game/game.ts中的 Game 类读取settings.json配置通过pal/拿到画布和系统信息再经deviceManager创建对应平台的 gfx 设备。Root 初始化cocos/root.ts 的 Root 类创建渲染管线、批处理器和各类管理器把图形设备和场景数据接起来。Director 驱动帧循环cocos/game/director.ts的 Director 管理一组System基类在 cocos/core/system.ts每帧按优先级调度它们执行然后加载场景、驱动组件生命周期。一句话总结Game 负责启动Director 负责每帧驱动System 负责干活。想深入帧循环从System基类和director.ts读起。关键配置cc.config.json 决定了你的引擎长什么样cc.config.json功能开关总表cc.config.json 是整个构建的核心配置作用类似引擎的菜单。features里列着3d、ui、physics-cannon、spine等几十个功能项编辑器里勾选功能时实际生效的就是这些条目——每个条目声明打包哪些模块、覆盖哪些常量、依赖哪些资源。constants定义HTML5、NATIVE、WECHAT等预编译开关构建时按目标平台写入代码里据此走不同分支。moduleOverrides则按条件替换模块实现比如 Web 构建把pal/audio换成 Web 版音频实现原生构建换成 native 版。改任何平台差异逻辑前先来这里查它由哪条规则决定。package.json 与 tsconfig.json构建和类型规则package.json 要求 Node 18两个最常用的脚本npm run build # 构建引擎 npm test # tsc 类型检查 jest 单元测试tsconfig.json 开了strict和experimentalDecorators后者就是游戏代码里ccclass、property装饰器能用的原因types数组把 jsb、box2d、webGPU 等外部类型声明也拉进了编译。3 步上手行动清单走一遍生命周期读 README.md然后打开 cocos/game/game.ts找到run()和start()对照上一节的链路把启动过程在脑子里过一遍。看懂 API 出口读 exports/base.ts看基础模块都向外暴露了什么再对照 docs/contribution/modules.md 理解模块划分规则。按兴趣选一条深入做 2D 游戏进 cocos/2d/ 和 cocos/ui/改渲染进 cocos/rendering/ 和 cocos/gfx/关心物理进 cocos/physics/。延伸阅读代码规范在 docs/TS_CODING_STYLE.md 和 docs/CPP_CODING_STYLE.mddocs/contribution/ 下还有模块、废弃 API 等贡献指南动手改代码前建议先读。【免费下载链接】cocos-engineCocos simplifies game creation and distribution with Cocos Creator, a free, open-source, cross-platform game engine. Empowering millions of developers to create high-performance, engaging 2D/3D games and instant web entertainment.项目地址: https://gitcode.com/GitHub_Trending/co/cocos-engine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考