Cocos Creator 3.0 迎来了面向未来的下一代引擎底层架构及诸多重大更新,标志着 Cocos 迈向了一个全新的征程。做为 Creator 之后的主力版本,v3.0 延续了 Cocos 在 2D 品类上轻量高效的优势,并且为 3D 重度游戏提供了完整高效的开发体验。
3.7.0
17 Jan 2023

Cocos Creator 3.7.0 是我们在不断挑战和提升自我路径上的又一力作。为了应对爆发的元宇宙需求以及支持更流畅更真实的 3D 世界,我们在渲染效果、GI 全局光照、LOD、动画系统、物理系统、易用性以及性能方面进行了众多提升。由于 3.7 版本更新众多,包含了大量的体验优化和缺陷修复,在此只列出重要更新,其余更新可以参考我们

3.6.3
11 Jan 2023

在 3.6.3 中,我们新增了淘宝小程序创意互动平台的支持,同时还完成了一系列关键性的缺陷修复,建议所有 3.6 用户升级。

 

改动说明

 

- 支持淘宝小程序创意互动平台,详见文档《发布到淘宝小程序创意互动》

- 修复在非 active 状态的

3.6.2
04 Nov 2022

重点更新

  • 优化原生 Spine/DragonBones 性能 #12788。我们在 3.6.2 重点优化了原生上 Spine 的运行性能。在 iOS 较低端设备上最大达到了 40% 以上的性能提升。在 Andr
3.6.1
23 Sep 2022

3.6.0 发布后,我们收到了不少开发者的反馈,非常感谢大家一如既往的支持。3.6.1 对这些问题集中进行了修复,提升了用户体验,也对一部分性能进行了优化,建议所有 3.x 用户升级。

除此之外,Cocos Creator 的官方 XR 内容开发插件 Cocos CreatorXR 也已适配 3.6.1。它在底层通过支持 OpenXR 标准协议来抹平不同 XR 设备之间的差异,可以一站式对创作内容进行开发并

3.6.0
17 Aug 2022

在 Cocos 团队内部,我们一直将 3.6 作为 3.0 的合并版本之后最重要的里程碑版本来看待,一方面这个版本的迭代周期是迄今为止最长的一个版本,另一方面是因为这个版本在多个方面的大幅进化。下面就是 3.6 版本的更新说明,由于更新数量过多(engine:1110 PRs,editor:678 PRs),在此只列出相对重要的更新。

重点更新

在 Cocos 团队内部,我们一直将 3.6 作为 3.0 的合并版本之后最重要的里程碑版本来看待,一方面这个版本的迭代周期是迄今为止最长的一个版本,另一方面是因为这个版本在多个方面的大幅进化。下面就是 3.6 版本的更新说明,由于更新数量过多(engine:1110 PRs,editor:678 PRs),在此只列出相对重要的更新。

重点更新

图形渲染

Surface Shader 自定义材质

Surface Shader 使用统一渲染流程和结构,可以让用户以简洁的代码创建表面材质信息,指定用于组合的光照和着色模型。相比旧版(Legacy Shader)的优点是更易书写和维护,有更好的版本兼容性,也更不容易产生渲染错误。并且可以从统一流程中获取很多公共特性,如统一的全场景光照和 Debug View 调试功能等。

Creator 也更易扩展出多种常见的复杂材质提供给用户,未来还会支持 Shader Graph 自动生成 Effect 代码,可以极大提高 Shader 开发者的效率。

CSM 级联阴影

普通的阴影贴图有一个致命弱点:当投影面积较大时,对阴影贴图分辨率的需求会超出硬件承载极限。如果不提高分辨率会导致阴影锯齿严重、形状缺失、不清晰,但减小投影面积又会导致阴影可视距离非常短。在阴影可视距离和阴影效果上的平衡调整是一个非常令人头痛的问题。

CSM将视锥按远近顺序划分为多块,近处投影范围更小而远处投影范围更大,相当于一个自适应的阴影贴图,从而提高数倍贴图利用率。它可以在较大的阴影可视距离上具备精细的阴影效果,再也不用把精力花费在参数调校上了。

新增 Rendering Debug View 模式

多种自定义的显示模式,帮助用户更快定位各种材质、光照、阴影显示问题,以及方便用户查看更清晰的特定场景信息,帮助用户做出优化决定。

GGX 环境反射卷积图

由于精确光源的高光都是使用 GGX 的 BRDF 分布,对于环境光源而言也必须使用同样的 BRDF 做球面卷积才可以让两种光源的光照效果对应。此外不同粗糙度的反射光照是存储在对应的 Mip 中,相比于自动生成的 Mip 数据,卷积计算可以修复以下问题:

  • 环境高光的泛光和拖尾现象被极大的削减了
  • 与 Substaince 的标准 PBR 材质工作流效果对不上
  • 平行光高光和环境光高光效果对不上

如图所示:

自动 Mipmaps
GGX 卷积
GGX | 平行光 | Mipmaps

各向异性光照模型

通过 Surface Shader 带来的好处,我们可以充分扩展 PBR 光照模型。在 3.6 已经完整支持了在精确光源和环境光源下,各向同性和各向异性的材质与光照模型。可以对接 Substaince PBR 材质库,制作拉丝纹路的金属、头发、丝绸等等。

其他

  1. 支持设置 Skybox 材质
  2. 增大材质的 Normal Strength 范围
  3. 新增 GLTF specular-glossiness workflow 支持
  4. 更新默认 FBX surface phong 材质支持
  5. 扩展 Blender principled bsdf 材质的 Specular 通道支持
  6. 添加 mixamo.com 模型材质导入支持

编辑器体验

UI 全面升级

V3.6 启用了全新的编辑器 UI,本次改版围绕「更协调」的视觉系统、「更科学」的视觉反馈、「更沉浸」的交互感受,对 UI 和交互进行了一次全方位的梳理。我们希望通过交互来改善视觉感受,通过视觉来影响交互体验,并从这两个层面进一步提高用户体验。未来我们将继续基于 Cocos 的设计目标、设计系统、设计原则进行规范化设计,持续更新迭代,优化核心交互和工作流程。

内置编辑器预览模式

开发效率是 Cocos Creator 非常重视的一项核心优势,在 v3.6 中这项优势得到了进一步提升。除了网页预览和模拟器预览,现在开发者还可以使用「编辑器预览」来运行游戏。编辑器预览将在场景管理器中直接执行游戏逻辑,并且可以实时调试游戏场景。一方面带来更无缝的预览体验,另一方面也补足了在调试方面的短板。

此功能目前处于实验性阶段,欢迎大家在使用过程中给我们更多反馈。未来我们也将持续关注研发效率,在脚本编译、项目调试、构建发布环节持续提升用户的幸福感。

动画嵌入播放器

动画编辑器新增了嵌入播放器功能,可以在任意动画中嵌入其他粒子和动画,并用类似视频剪辑软件轨道的方式进行编排,自由调整时长和播放位置。

在完成编辑之后,嵌入播放器的内容会伴随此条动画剪辑(AnimationClip)一起播放,在 Animation 组件和动画图系统中都能支持。此外,动画嵌入播放器支持添加到 FBX 导入的动画上,可以实现更灵活的特效控制,解决了导入动画难以二次编辑的问题。

目前在 3.6 中提供了粒子和动画两种播放器,可以在实验室设置中启用。

集成多语言支持

为了更好地服务开发者出海,v3.6 提供了内置的多语言工具 Localization Editor(L10n),目前支持文本翻译和资源替换。其定位是与 Creator 深度集成,通过高自动化提高翻译的效率,并且以无代码的方式降低使用门槛,达到任何人都可以开箱即用的目的。

包含的核心功能为:

  1. 支持机器翻译,目前接入了 Google、有道翻译
  2. 支持一键提取各类需要翻译的内容
  3. 支持 Excel、csv、po 文件批量导入导出
  4. 支持多语言实时预览及资源替换

Localization Editor 目前处于实验性阶段,未来将提供更丰富的游戏本地化能力,欢迎大家提供反馈。

场景编辑器

  • 支持表面吸附和顶点吸附
表面吸附 Surface Snapping(按住 ctrl/cmd + shift)
顶点吸附 Vertex Snapping(按住 v)
  • 支持框选功能,可以批量选中多个物体

构建能力

  1. 可以在构建任务中自由选取和组合 Build、Make、Run 等子任务执行
  2. 资源服务地址已作为全平台共用参数,支持一键使用构建内置服务器,方便本地开发测试
  3. 优化了构建内编译引擎与编译脚本的任务调度,独立进程执行,降低构建进程对内存的占用
  4. 允许在偏好设置内添加自定义 cmake 工具供原生构建使用
  5. 构建钩子函数支持 onError 钩子函数用于捕获构建失败的情况
  6. 允许在偏好设置里关闭构建纹理压缩、引擎、自动图集对缓存的使用

其他

  1. 支持 Mesh 资源的缩略图显示
  2. 支持取消对场景编辑器的帧率限制(实验室功能)
  3. 支持直接在 assets 面板筛选 Bundle 文件夹,快速找到 Bundle

基础设施

原生化层级上升

从去年 3.3 版本发布之后,其中最重要的原生化团队就开始了针对 3.6 版本目标的开发工作。这么长的周期其实往往是一些底层根基性重构所必需的,而商业引擎服务于全行业的特殊性决定了它既要紧跟硬件的发展不断挑战最好的性能、最优秀的画面表现力,还要在生产端不断提升生产效率,保持对项目的兼容性和对不同硬件环境的伸缩性适配。这些挑战意味着引擎需要对底层框架进行持续的迭代和重构,有时候是破坏性的,比如从 2D 引擎进化为 3D 引擎,而大多数时候这种迭代是延续性的,比如我们在 3.6 的原生化进展。尽管花费了我们团队一年的时间,进行了多个阶段和多个模块的重构,原生层代码增加了两倍多,但我们仍然在大幅度优化性能的基础上做到了对老项目的兼容。这样的底层重构一方面带来了可见的性能和表现力提升,另一方面,我们往往是为了未来的进一步迭代做好准备,扫清障碍。从 3.6 这个版本的缩影大家可以看到引擎开发永恒的命题:持续不断得自我变革,以适应硬件的更新和用户需求的变化。

2D 渲染性能

3.6 还有一个重要的具有里程碑意义的标志,那就是在 2D 渲染性能上和 2.x 达到了同样的水准,代表着 2.x 用户如果有 3D 需求或持续迭代需求可以放心升级到 3.x。在底层原生化的基础之上,我们进一步将 2D 渲染数据结构、2D 合批管理器和渲染流程都原生化了,让 2D 的合批和提交渲染的流程都在原生进行,以达到类似 2.x 的性能表现。当然,现阶段还有部分遗留的工作没有完全完成,比如 Spine 的合批支持,但这也代表着在原生化的基础之上,3.x 的 2D 渲染性能还将有更高的天花板等待我们去突破。

添加原生插件能力

原生插件可以链接开发者现有的 C/C++ 代码库,绑定接口到JS层并在不同项目间重复使用。 

通过利用 CMake 的能力,插件能灵活地集成源文件、静态库或动态库。C/C++ 接口可以直接使用传统的自动/手动绑定机制,也可以使用3.6 新增的 sebind 高阶接口导出到脚本层。 开发完成后,原生插件可以 zip 包的形式单独分发, 也可以打包到 编辑器插件 一并发布。

详细使用方式请参考 使用文档 和 使用范例

其他

  1. 添加更易用的高层 JS 绑定 Sebind
  2. 集成 Android Game Activity
  3. Downloader 支持在 iOS/Android 平台的断点续传
  4. 添加 `settings` 模块以便用户访问,保存了用户预设的运行时项目配置
  5. 重构引擎启动流程,简化 application.js 逻辑,增加启动阶段的事件

框架能力

Marionette 动画系统更新

  • 动画图支持动画预览
    编辑动画状态机时可以实时预览,过渡与混合的效果,快速调试,无需每次修改之后都要运行游戏才可以查看结果。
  • 动画图支持变量和 Layer 重命名,支持更清晰的自定义的名字,方便修改。
  • 动画图支持过渡线的排序, 清楚看到过渡所使用的优先级。
  • 动画图增加了 “终点起始时间” 属性,允许过渡的目标动画从指定位置开始播放。
  • 动画图现在可以将某个过渡配置为可中断的,以允许指定的过渡被其它的过渡中断,该功能可在实验室设置中启用。

粒子系统更新

  • 新增粒子噪声图模组,为粒子带来更自然,更加可控的随机运动效果
  • 支持 Instanced Mesh,提升发射器的性能
  • 修复粒子编辑面板不支持 Undo 的问题,方便调试
  • 支持子节点树的组合粒子预览控制

其他

  • Mesh 支持动态类型,可以在运行时通过 API 更新网格数据
  • GeometryRenderer 增加曲线类型 Spline(支持 Linear, Bezier, Catmull-Rom 曲线)
  • 支持 3D 空间 SpriteRenderer
  • 在 UI 顶点数据中填充 z 值,以便支持 UI 的 3D Transform
  • 支持渲染组件的优先级排序
  • 支持音频 PCMData 和 sampleRate 获取
  • 地形画刷支持旋转
  • 支持地形高度画刷
  • Light map 烘焙器支持使用 tga 贴图格式
  • MeshRenderer 会自动设置渲染用的 Light map 资源
  • 更新 iOS 原生 EditBox 样式

DCC

FBX/GLTF的 Phong 和 PBR 材质智能导入

3.6 在材质导入上实现了对 Diffuse-Specular 材质模型(包括 Phong 和 SpecularGlossiness PBR)的支持,可将材质参数智能转换到标准 Metallic Roughness PBR 模型中。这样就可以在不更改光照模型的情况下获得接近原 DCC 软件中的材质表现。

Blender |未使用材质转换 |使用材质转换
使用 Phong 材质的 FBX 智能材质导入

不再默认拆分模型

之前的版本由于 uniform 的限制,在 CPU 计算的骨骼动画中,当骨骼数量超过一定值后,无法一次性通过 uniform 存储所有骨骼数据,所以我们在模型导入时有可能拆分模型和骨骼。所以经常收到反馈说自己的一个角色模型会占用多个 DrawCall,主要原因就是这里被自动拆分了。更重要的是由于拆分不能在运行时进行,只能在离线进行,所以我们的拆分标准使用的是最低端的运行时设备和驱动(iPhone 6 WebGL),对骨骼数量限制很大。

所以,Cocos Creator 3.6 对这一问题做了策略优化:

  • 默认情况下不再拆分模型,不对导入的模型数据做修改(也维持以前的模型设置不变)
  • 如果骨骼数量未超过实际运行时驱动的限制,直接使用 uniform 传递
  • 如果骨骼数量超过限制,则使用纹理传递

使用纹理传递骨骼动画数据的方式需要在顶点着色器中访问纹理,这一特性最低支持为 OpenGL ES 3.0, WebGL 2.0。但依靠 GL 扩展,在仅支持 OpenGL ES 2.0 和 WebGL 1.0 设备上,几乎已达到 100% 的覆盖率,所以无需担心兼容问题。

目前保留此选项应该只是为了保持旧项目的兼容性,在适当的时候会考虑移除。


版本升级提示

  • Windows 平台移除 Win32 支持,仅保留 Win64 发布
  • iOS 平台最低版本支持从 iOS 10 变更为 iOS 11(为了使用 C++ 17)
  • 内置材质的命名和编辑器中的命名保持统一,因此 EffectAsset.get、Material.initialize 中使用内置 Effect 时通常需要加上 “builtin-” 前缀。
  • 构建模板中 application.js, game.js, index.js 等文件被更新了,如果有在项目或者构建插件中自定义过模板,请重新生成并做相应修改。详见 升级文档
  • settings.json 格式发生修改,对这个文件做了定制化处理的插件可能会无法使用。详见 升级文档
  •  由于引擎内部会对 Mask 下的节点做特殊处理,在获取 Mask 下的子节点时,建议使用 getChildByName 函数,通过名字而非索引来获取,以避免不可预料的问题出现。
  • Android gradle:替换 jcenter 为 mavenCenter 
  • 添加可从 `cc` 导入的 `native` 模块,包含代码提示,用于替代 `jsb` 全局变量
  • 我们默认关闭了字节开发者工具的 ES6 转 ES5 功能,来解决一些编译遇到的问题。因此我们需要手动将开放数据域模板工程转成符合 CommonJS 规范的写法,否则会因为不能识别 ES Module 导致字节的子域启动失败。如果你的项目也遇到了这个问题,请参考该 PR 修改 `项目路径/build/bytedance-mini-game/openDataContext` 该路径下的工程
收起
3.5.2
22 Jun 2022

编辑器更新

  • 修复嵌套预制体修改属性时可能报错的问题
  • 修复材质预览初始化宽高非整数导致的报错
  • 修复脚本读取 npm 包没有正确处理上层 package.json 导致读取失败的问题

引擎更新

编辑器更新

  • 修复嵌套预制体修改属性时可能报错的问题
  • 修复材质预览初始化宽高非整数导致的报错
  • 修复脚本读取 npm 包没有正确处理上层 package.json 导致读取失败的问题

引擎更新

  • 修复编辑器下重复切换场景导致的内存泄露(engine#11355)
  • 修复节点组件上修改 fbx 里材质,保存后出现多次弹窗询问是否保存的问题(engine#11284)
  • 修复 glsl100 shader 中 isnan(0.0) 判断导致的问题(engine#11262)
  • 修复卡通渲染材质中的 specular 参数(engine#11265)
  • 为 DCC 导入兼容的材质优化编辑器设置和代码整理(engine#11266)
  • 修复编辑器下调用 `setUseBakedAnimation` 导致的渲染问题(engine#11267)
  • 修复 Android 平台下 websocket 错误后没有回调 onError 的问题(engine#11441)
  • 不强制对 Editbox 的占位文本使用 top 垂直排列(engine#11303)
  • 修复和优化 core 模块下的 API 文档注释 (engine#11338)
  • 为 2D 顶点格式添加 API 文档(engine#11394)
收起
3.5.1
01 Jun 2022

V3.5.1 在不影响原有功能稳定性的前提下加入了两项影响深远的实验性功能。一是智能导入 FBX 中的 DCC 默认材质,还原美术在各类 DCC 工具中使用的材质和外观;二是内置了一系列 Surface Shader 材质资源,这将成为未来支撑材质定制的基石。除此之外,我们还完成了一系列关键性的问题修复,体验优化和大量的文档优化,建议所有 3.x 用户升级。

重要更新

V3.5.1 在不影响原有功能稳定性的前提下加入了两项影响深远的实验性功能。一是智能导入 FBX 中的 DCC 默认材质,还原美术在各类 DCC 工具中使用的材质和外观;二是内置了一系列 Surface Shader 材质资源,这将成为未来支撑材质定制的基石。除此之外,我们还完成了一系列关键性的问题修复,体验优化和大量的文档优化,建议所有 3.x 用户升级。

重要更新

实验性:FBX 智能材质导入

FBX 智能材质导入是模型导入器中辅助转换材质的一个功能,它可以将各种 DCC 工具导出到模型中的部分标准材质直接映射到 Cocos Creator 的内置材质中,尽量还原美术在 DCC 工具中看到的材质效果。我们可以对比一下 Maya 中的 Standard Surface 材质导入 Cocos Creator 后的效果:

Maya 工具内效果

开启 FBX 智能材质导入后 Cocos Creator 内效果

此功能已支持主流 DCC 工具:3ds Max、Blender、Maya、C4D 中的部分标准材质。

具体使用可以参考使用文档。同时我们也将在 3.6 中持续优化模型和材质导入体验,敬请期待。

实验性:新增 Surface Shader

从 3.0 版本以来,不少开发者都经历过升级过程中材质无法正常使用,需要迁移的问题,为此我们也准备过不少材质系统专属的升级文档,然而手动升级过程的体验确实不尽如人意。此问题的根本原因是引擎的光照模型和表面材质的计算一直在调整,这会影响所有相关的材质 effect 代码,也会影响到用户复用这些材质时的兼容性。
为了提升材质系统的兼容性,我们新增了一系列 Surface Shader 资源,抽象了引擎内的光照模型和表面材质计算,未来开发者可以使用这些抽象好的头文件和内置函数极大简化自己书写的 effect 资源。同时由于多了一些封装,跨版本间的兼容性也会更有保障。
具体 Surface Shader 的使用请参考使用文档

文档优化

从 3.5 开始我们设计了新版 API 文档页面,受到了开发者比较普遍的好评和一些反馈。在 3.5.1 我们继续做了大量的内容检查,通过近 40 个 PR 进一步补全了之前遗留的一些 API 文档,修复了部分文档错误。并且之后文档也会得到持续性的优化,希望给开发者带来越来越好的使用体验。

重要修复

  1. 修复浏览器预览速度过慢的问题
  2. 修复 Mobile Safari 上无法预览的问题
  3. 修复部分材质从 3.4.2 或更低版本不能自动升级的问题
  4. 修复 3D 粒子系统在状态切换时可能的报错和表现问题
  5. 修复延迟管线的光影计算

详细更新

  • [FEATURE] Add smart material conversion for FBX importer
  • [FEATURE] add experimental surface shader (engine#11048)
  • [OPTIMIZE] change camera settings to orthogonal type in 2d scene templates (engine#11020)
  • [OPTIMIZE] Improve API documentations in engine
  • [OPTIMIZE] Add a new experimental import strategy in AssetDB, avoid repeative import process
  • [OPTIMIZE] Update lightmap tool LightFX
  • [OPTIMIZE] Inspector keep group display order
  • [OPTIMIZE] Improve shadowmap settings in default scene (engine#11213)
  • [OPTIMIZE] Optimize anisotropy sample (engine#11075)
  • [OPTIMIZE] Spotlight interface description change (engine#10964)
  • [OPTIMIZE] Listen WINDOW_RESIZE event by application (engine#10930)
  • [OPTIMIZE] Load libGLESv3.so by default while user choose glesv3 (engine#10941)
  • [OPTIMIZE] Allow native projects use user pre-set global cmake variables (engine#11011)
  • [OPTIMIZE] Refine MissingScript debugger (engine#10916)
  • [OPTIMIZE] Automically unfold array list when editing array length in the inspector
  • [OPTIMIZE] Optimize curve unit test (engine#10912)
  • [FIX] Fix long loading time issue
  • [FIX] Fix camera preview not working issue
  • [FIX] Fix no responding due to lock on scene scripts
  • [FIX] Fix preview issue on some browsers like Safari
  • [FIX] Fix inspector cannot create new clip under animation editing mode
  • [FIX] Fix clip list not updated after clip creation under animation editing mode
  • [FIX] Fix clip removal check under animation editing mode
  • [FIX] Fix frequent update of nodes in the animation editor
  • [FIX] Improve error handling during node data migration for animation clip
  • [FIX] Popup warning when regenerate an exist prefab asset
  • [FIX] Fix asset builder issue which cause wrong JSON group for auto-atlas asset and duplicated assets in JSON
  • [FIX] Data tolerance for animationBlendType in AnimationGraph
  • [FIX] Fix conflict after importing custom texture compression config
  • [FIX] Fix code sample issue in the template of the builder's plugin
  • [FIX] Fix engine error caused by material switch
  • [FIX] Fix prefab data copy issue when the root node is 2d node
  • [FIX] Fix issue when copy component data from prefab instance to other prefab
  • [FIX] Fix error when AnimationGraph panel is initialized during editor startup
  • [FIX] Fix selection issue in scene editor when viewing on screen with dpr larger than 2
  • [FIX] Avoid potential infinity loop in tickInEditMode
  • [FIX] Fix error caused by empty result when dumpping node data
  • [FIX] Fix error when typing enter in the texture name field of the joint texture layout
  • [FIX] Fix builder malfunctioning after importing configurations
  • [FIX] Fix view rotation after modifying scale value of the preview window
  • [FIX] Fix part of circular reference issue by upgrading rollup to 2.37.0
  • [FIX] Fix collision matrix setup issue in project setting
  • [FIX] Fix issue that the last panel cannot be dragged in dock
  • [FIX] Circular references should cause workflow failed (engine#10841)
  • [FIX] Fix geometry-renderer in deferred pipeline (engine#10890)
  • [FIX] Fix meshBuffer checkCapacity bug (engine#10910)
  • [FIX] Remove ambient.mipmapCount (engine#10920)
  • [FIX] Fix auto-atlas test bug cause time sequence (engine#10914)
  • [FIX] Fix fog is more brighter with native engine (engine#10972)
  • [FIX] Fix android crash due to surface not ready (engine#10984)
  • [FIX] Fix pause operation fail when play and pause audio in the same frame on native platforms (engine#10990)
  • [FIX] Fix instanced model has no spot light shadow (engine#10921)
  • [FIX] Fix particle system memory issue (engine#11032)
  • [FIX] Terrain and model automatic choose lightmap shader (engine#11006)
  • [FIX] Correct render pipeline script template error (engine#10927)
  • [FIX] Fix animation mask data cannot be load from gltf (engine#11033)
  • [FIX] Fix shader migration from lower version (engine#11038)
  • [FIX] Fix subcontextview for wechat platform (engine#11049)
  • [FIX] Fix notifySkinnedMeshRemoved (engine#11074)
  • [FIX] Fix word wrap for Vietnamese characters (engine#10925)
  • [FIX] Instantiate all FastDefined objects as value type (engine#11052)
  • [FIX] Fix format feature request for Float32 for gles3 and webgl2. (engine#11084)
  • [FIX] Fix eglSwapbuffer error due to eglSurface is not ready (engine#11083)
  • [FIX] Disable gametick after enter background(revert to logic to version 3.4.2 (engine#11095)
  • [FIX] Skip a pair of quotations for avoiding spaces when image name are detected in RichText (engine#10954)
  • [FIX] Assign underline initial value when label segments are contructed in RichText (engine#10954)
  • [FIX] Fix clear particle bug (engine#11066)
  • [FIX] Fix ndc->world with deferred shading (engine#11099)
  • [FIX] Remove enableBatch from spine/db (engine#11100)
  • [FIX] Fix deferred pipeline depth stencil with linear sampling in webgl2.0 (engine#11110)
  • [FIX] Fix multi blank lines (engine#11116)
  • [FIX] Fix ios accelerometer not working (engine#11142)
  • [FIX] Add sky.effect with surface shader (engine#11156)
  • [FIX] Fix error during particle switch (engine#11139)
  • [FIX] Change logger level (engine#10944)
  • [FIX] Don't push data if debug is not enabled. (engine#11118)
  • [FIX] Fix physics collision matrix (engine#11181)
  • [FIX] Fix multi quotations bug and add unit tests (engine#11190)
  • [FIX] Fix light flashes at instanced model (engine#11203)
  • [FIX] Solve getInstancedModel judgment error (engine#11205)
  • [FIX] Fix prefab generates incorrect data (Repeated node) (engine#11211)
  • [FIX] Fix terrain index buffer sharing bug (engine#11206)
  • [FIX] Fix isnan(0.0) with webgl1.0 (engine#11262)
  • [FIX] Fix specular params with surface toon (engine#11265)
收起
3.5.0
06 May 2022

重要更新

Marionette 动画系统

在 v3.4 版本中我们带来了支持复杂角色动画的动画系统 Marionette,支持动画状态机和多维混合等功能。在 v3.5 中,我们继续向其中添加了不可或缺的关键能力:层级和遮罩。这可以让开发者轻松做出更复杂的动作系统,比如下面展示的上下半身分离。

重要更新

Marionette 动画系统

在 v3.4 版本中我们带来了支持复杂角色动画的动画系统 Marionette,支持动画状态机和多维混合等功能。在 v3.5 中,我们继续向其中添加了不可或缺的关键能力:层级和遮罩。这可以让开发者轻松做出更复杂的动作系统,比如下面展示的上下半身分离。

2D 项目体验优化

对于 2D 用户和 2D 项目开发,我们做了一些编辑器的体验增强,这也是为了帮助有升级需求的 2.x 开发者更好得升级上来,获得与 2.x 类似的体验。从 3.0 发布以来,我们一直在通过各项性能和体验优化积极推动开发者的升级,并且还会持续优化下去。在 v3.5 中,你将可以看到下面的一些体验优化:

  1. 所有 2D 项目创建出的场景都会默认包含 Canvas 和一个正交投影的 2D Camera,不会包含 3D Camera
  2. 默认的 2D 场景会默认使用 2D 场景视图
  3. 一部分属性面板,比如节点,也会支持 2D 视图
  4. 所有 3D 模块被默认剪裁了,并且在添加组件列表和节点创建列表中也不会包含 3D 相关的组件和节点
  5. 如果你的 2D 项目中需要使用 3D 能力,只需要在项目配置中将 3D 模块添加上即可

Frame Pacing Library (Swappy)

Cocos 和 Google 在 Android 移动平台上一直以来都有非常紧密的合作,Android 也是我们最重要的平台之一。我们很高兴宣布在 v3.5 引擎中加入了Frame Pacing Library。它是 Android Game Development Kit (AGDK) 的一部分,主要用于帮助游戏平滑和稳定帧率,对 OpenGL 或 Vulkan 后端都适用。你可以在 Android 构建面板中启用 Swappy 来开启此功能。

基础几何渲染 Geometry Renderer

我们在此版本中引入了一个新的简易几何渲染的 API,这些 API 是为了绕过组件层,直接在屏幕上渲染一些用于调试的标记几何体。目前已支持线条、盒子、球体、多边形等几何体,渲染模式支持线框模式、填充模式,一部分几何体也可以动态开启光照和深度测试。所有几何体的坐标系在世界空间,并且支持 transform。

更详细的几何体信息请参考下面的表格

材质编辑体验优化

在过去几个版本中,我们一直在修正和提升渲染表现,同时,我们也在关注美术侧的 DCC 内容生产工作流。在 v3.5 中会有一部分材质体验的优化交付给大家:

  1. 当一个 FBX/GLTF 资源被导入后,如果需要修改材质,你不再需要 dump material 然后在复制后的材质中修改,你可以直接在导入的材质上修改。
  2. 当你修改材质时,新版本将支持 undo / redo 操作。
  3. 当你在编辑材质时切换 effect,不同 effect 之间匹配的属性值会被缓存并迁移,比如 'mainTexture' 的贴图资源,如果在不同 effect 中都包含就会自动维持。

同时敬请期待我们后续版本中更显著的美术体验优化。

地形的抹平画刷和高度设置

地形编辑器在新版本中提供了新的抹平和高度画刷,可以让开发者们更方便得编辑平面地貌。

平台抽象层 Platform Abstraction Layer

从 v3.5 开始,我们将所有平台层相关的底层适配代码集合到了 PAL 模块中,包括系统信息、窗口适配、音频、输入系统等。系统层的事件派发行为也被统一了。这是一个底层重构,用户层 API 不会收到影响,但这次重构会让 Cocos Creator 未来有能力更轻松得适配新的平台和环境。

性能优化

此版本中比较显著的性能优化包含以下几点:

  1. Spine 和 Dragonbones 在原生平台通过共享内存避免了 C++ 向 JS 拷贝数据,对原生平台性能有一定的提升。
  2. 优化了 RealCurve 和 CurveRange 的内存占用。
  3. 大幅度优化了粒子系统的反序列化性能。
  4. 在 Android 平台使用 okhttp 来实现 WebSocket 模块以降低功耗并提升性能。
  5. 通过减少原生对 JS 的调用次数来提升 Label 和 Graphics 的渲染性能。

新的 API 文档设计

对于之前的 API 文档体验社区用户多有吐槽,也让引擎的新人上手门槛和学习曲线抖升。为了解决这个至关重要的问题,我们重新设计了 API 文档的组织方式和界面设计,大家可以访问我们 新的 API 文档链接 来体验。当然,这只是一个开始,我们也希望大家继续反馈建议帮助我们持续改善文档的体验。

引擎仓库和自定义引擎升级

为了更好服务开源社区,我们将原生引擎仓库合并到了 engine 仓库中,并且迁移到 cocos/cocos-engine,从现在开始,我们将通过公开 issues 和 公开 projects 向开源社区同步我们的后续计划。如果你正在使用自定义引擎,那么这个修改对你的影响会比较大,从 v3.5 开始,自定义引擎只需要克隆 engine 仓库即可。所有以前在 TS 引擎仓库的修改可以直接 rebase 到 v3.5 分支,但是以前在 engine-native 仓库的修改需要手动应用到 engine 仓库的 native 目录下。详细信息可以参考自定义引擎文档

破坏性更新

  • [FIX] Fix dragonbones/spine sockets transform (engine#10260)

从 v3.5 开始,请避免向 sp.Skeleton 或 dragonBones.ArmatureDisplay 的 sockets 挂件 target 设置已在使用的节点,否则这个节点的变换矩阵会被覆盖。正确的方法是创建一个新的空节点并设置为 socket target,详细信息可以参考 Spine 挂件文档

  • 从 v3.5 开始引擎将支持模型级别阴影偏移(Shadow bias),这将使得阴影效果更容易适配不同模型的表面。如果你的项目中包含自定义材质,请参考升级文档来应用这个配置。
  • Effect 资源中关于 Macro Tags 和 Functional Macros 的语法得到了升级,避免了占用 glsl 的标准 define 语法,旧项目中的 Effect 资源在升级过程中会被自动升级。但如果你从外部直接复制旧版本的 Effect 资源或写新的 Effect 资源时,请注意语法方面的变化:
    • Macro Tag 的新语法:`#pragma define-meta`
    • Funtional Macro 的新语法:`#pragma define`

已知问题

  • 在 iOS 15.4 中,Safari 中默认开启了 “WebGL via Metal” 这项实验性功能,这将会导致部分项目出现渲染问题(画面不刷新或部分刷新,错误的图块等)。一般在开启了 `ENABLE_WEBGL_ANTIALIAS` 的情况下,并且使用了离屏 FrameBuffer 并对其采样,会触发此问题。临时解决方案是在项目配置中关闭 `ENABLE_WEBGL_ANTIALIAS`,此问题暂无根本性的修复方案,很可能会在新的 iOS 版本中得到修复。

Detailed change log

  • [FEATURE] Marionette: layer, mask, auto-reset trigger, empty state, localization (engine#10179)(engine#9913)(engine#10550)
  • [FEATURE] Improve user experience for 2D only project
  • [FEATURE] Integrate Android Frame Pacing library (engine#10327)
  • [FEATURE] Add low level geometry renderer for debugging (engine#10189)
  • [FEATURE] Make builtin material of FBX and GLTF directly editable (engine#10518)
  • [FEATURE] Support undo redo on editing assets (engine#10657)
  • [FEATURE] Add Flatten and SetHeight sculpt tool to terrain editor
  • [FEATURE] Support drag or select animation clips directly to the animation editor for editing
  • [FEATURE] Make animation module optional (engine#10257)
  • [FEATURE] Add shadow bias setting for MeshRenderer (engine#10102)
  • [FEATURE] Add constants for surface shaders (engine#10590)
  • [FEATURE] Support selecting mipmap range for Texture2D and TextureCube. (engine#10500)(engine#10096)
  • [FEATURE] Add Texture2D option to fix blending artifact caused by semi-transparent pixels (engine#10419)
  • [FEATURE] Add a new interface to query format feature info: Device.getFormatFeature (engine#9949)
  • [FEATURE] Add specular intensity for DCC effects (engine#10613)
  • [FEATURE] Rich text supports vertical alignment (engine#10340)
  • [FEATURE] Add spacingX property to Label inspector for BMFont type (engine#9541)
  • [FEATURE] Distribute touch events independently (engine#10712)
  • [FEATURE] Add destroy window event and recreate window event on windows platform (engine#10365)
  • [FEATURE] Add Node.getPathInHierarchy for getting complete path in hierarchy (engine#9536)
  • [FEATURE] Support custom texture compress tools in the Project Settings
  • [FEATURE] Support engine separation feature in OPPO platform build
  • [FEATURE] Support the OS Target (simulator or device) option in iOS platform build
  • [FEATURE] Add cmake hooks support for cocos-service (engine#10691)
  • [FEATURE] Support inspector droppable config (engine#10440)
  • [OPTIMIZE] Redesign platform abstraction layer
  • [OPTIMIZE] Optimize memory occupation of RealCurve, CurveRange (engine#10346)
  • [OPTIMIZE] Optimize decorator performance for particle system instantiation (engine#10323)
  • [OPTIMIZE] Avoid spine & dragonbones copping buffer from native to js (engine#10235)
  • [OPTIMIZE] Android: reduce power consumption by using okhttp to implement websockets (engine#10384)
  • [OPTIMIZE] Improve CameraComponent inspector user experience (engine#10708)
  • [OPTIMIZE] Improve Skybox inspector user experience (engine#10004)
  • [OPTIMIZE] Refine context 2d implementation, reduce call from native to js (engine#10211)
  • [OPTIMIZE] Reset light map when rebuild terrain (engine#10714)
  • [OPTIMIZE] Simplify cmake configurations in the native template (engine#10479)
  • [OPTIMIZE] Improve the JSON grouping strategy for building dependencies of merged bundle
  • [OPTIMIZE] Optimize texture compress panel, support searching config in panel
  • [OPTIMIZE] Optimize output logs of the build process, parameter completions of the command line build, parameter checks for some platforms
  • [OPTIMIZE] Disable bindingMappingInfo validation (engine#10701)
  • [OPTIMIZE] Reset-property from unknown type (engine#10687)
  • [OPTIMIZE] Exclude arm64 arch and specify x86_64 for ios simulator by default (engine#10679)
  • [OPTIMIZE] Do not play particle system component in Editor (engine#10678)
  • [OPTIMIZE] Disable post-process alpha blend (engine#10658)
  • [OPTIMIZE] Set simulator window position to center (engine#10655)
  • [OPTIMIZE] Remove cocos2d-x network deprecated code (engine#10647)
  • [OPTIMIZE] Remove deprecated API in animation module (engine#10645)
  • [OPTIMIZE] Remove some deprecated api (engine#10656)
  • [OPTIMIZE] Minor module refactor in core/renderer/ (engine#10643)
  • [OPTIMIZE] Add `keep` attribute to java class in project cfg (engine#10641)
  • [OPTIMIZE] Change rich text warning for splitting long strings (engine#10624)
  • [OPTIMIZE] Disallow animation on particle system properties (engine#10605)
  • [OPTIMIZE] Mark some methods as internal (engine#10604)
  • [OPTIMIZE] Disallow animation on customMaterial (engine#10601)
  • [OPTIMIZE] Do not remove all RichText children when resetting (engine#10599)
  • [OPTIMIZE] Modify the application interface name and remove the js keyword (engine#10556)
  • [OPTIMIZE] Optimize ts templates (engine#10553)
  • [OPTIMIZE] Optimize assets editing interface (engine#10531)
  • [OPTIMIZE] Output warning info when attached to the node has zero scaling (engine#10524)
  • [OPTIMIZE] Android: prevent class CocosWebSocket from obfuscation in release mode (engine#10511)
  • [OPTIMIZE] Optimize the way how animation component update its animation content (engine#10485)
  • [OPTIMIZE] Shader optimization always on (engine#10483)
  • [OPTIMIZE] Move AppDelegate into template (engine#10509)
  • [OPTIMIZE] Add dynamic library export macro (engine#10393)
  • [OPTIMIZE] Add DisallowMultiple for UIOpacity component (engine#10390)
  • [OPTIMIZE] SDL related interface encapsulation (engine#10385)
  • [OPTIMIZE] Optimize material editing using cache prop-value (engine#10376)
  • [OPTIMIZE] Keep EditBox placeholder overflow (engine#10368)
  • [OPTIMIZE] Use approx instead of strict equal in UITransform to avoid potential endless loop (engine#10357)
  • [OPTIMIZE] Modify diffuseMap property visibility (engine#10333)
  • [OPTIMIZE] Windows platform handles multiple events at once (engine#10344)
  • [OPTIMIZE] Shader code style improvements for future surface shader (engine#10326)
  • [OPTIMIZE] Bypass job system creation if not needed (engine#10308)
  • [OPTIMIZE] Optimize android download tasks. (engine#10274)
  • [OPTIMIZE] @disallowAnimation should not imply visible (engine#10262)
  • [OPTIMIZE] Optimized deletion operation for skybox environment map (engine#10248)
  • [OPTIMIZE] Optimize property name display format (engine#10241)
  • [OPTIMIZE] Return aabb objects back to pool after usage (engine#10230)
  • [OPTIMIZE] JSB add convert routines for size_t/long (engine#10198)
  • [OPTIMIZE] Change lighting map unpack and luminance multiply (engine#10185)
  • [OPTIMIZE] Rearrange IA input variables and functions for surface shader (engine#10123)
  • [OPTIMIZE] GFX: refactor access typed array to access flags (engine#10103)
  • [OPTIMIZE] Gfx: refactor binding mappings (engine#10013)
  • [OPTIMIZE] Use lagacyPublic to marked deprecated public interface (engine#9859)
  • [OPTIMIZE] Shadow info migration (engine#9857)
  • [OPTIMIZE] Safely destroy the geometry data (engine#9849)
  • [OPTIMIZE] UI: add same value check in property setter (engine#9744)
  • [OPTIMIZE] Optimize label serialization of "spacingX" and "underlineHeight" (engine#9629)
  • [OPTIMIZE] Rich Text format optimization by split into small sections (engine#9601)
  • [OPTIMIZE] Clean up gfx module for independent compilation (engine#9573)
  • [OPTIMIZE] Code style: replace macros to functions (engine#9572)
  • [OPTIMIZE] Set active to false if pass undefined or null to Node.active (engine#9571)
  • [OPTIMIZE] Optimize scroll view offset annotations (engine#9553)
  • [OPTIMIZE] Remove deprecated attributes: srcBlendFactor and dstBlendFactor#6461 (engine#9533)
  • [OPTIMIZE] Show pipelineStates in inspector (engine#10586)
  • [OPTIMIZE] Add category config file for docs (engine#10589)
  • [FIX] Fix rendering issue after baking light map with prefab
  • [FIX] Fix baking tool LightFX multi-thread error
  • [FIX] Fix prefab data lost when exiting from animation edit mode to prefab edit mode
  • [FIX] Fix prefab/scene data may be overwritten when switch between scene and prefab quickly
  • [FIX] Fix inability to save changes to nested prefab
  • [FIX] Fix warning when clicking on different FBX assets
  • [FIX] Fix a series of optimization issues related to keyframe operation in the animation editor
  • [FIX] Fix build error on windows platform when editor path contains spaces
  • [FIX] Fix build failure after check [Main Bundle is remote] option on mac platform
  • [FIX] Fix an issue where the editor extension failed to start and could still be queried
  • [FIX] Fix prefab ID will be changed after rename of FBX or GLTF
  • [FIX] Fix octree culling rule (engine#10723)
  • [FIX] Walk around iOS 15.4 wasm memory issue (engine#10721)
  • [FIX] Bypass the bug that vulkan destroys resources that are still in use (engine#10716)
  • [FIX] Fix the performance issue caused by texture mipmap (engine#10713)
  • [FIX] Fix native module override (engine#10709)
  • [FIX] Fix #11925 skin instancing vertex attributes binding order for native… (engine#10703)
  • [FIX] Fix rich text children index bug (engine#10700)
  • [FIX] Fix sub context view not working when the design resolution size is less than 513 * 513 (engine#10698)
  • [FIX] Fix scroll view Auto Scroll Brake bug (engine#10693)
  • [FIX] Fix instanced rendering issue by joint index (engine#10692)
  • [FIX] Fix: set tmxAsset not apply file (engine#10690)
  • [FIX] Fix: set skeleton data, _cachedSockets should be reset (engine#10671)
  • [FIX] Remove playing audio when player is destroyed (engine#10670)
  • [FIX] Use correct macro patches (engine#10669)
  • [FIX] Correct profiler statistics (engine#10667)
  • [FIX] Fix screen size && touch event on Alipay platform (engine#10666)
  • [FIX] Fix ndk path not working (engine#10627)
  • [FIX] Fix android crash due to eglSurface unavailable (engine#10621)
  • [FIX] Use macro to set XXTEAKEY (engine#10607)
  • [FIX] Fix opacity bug when active false (engine#10595)
  • [FIX] Fix #11796 using cc_shadowbias without batching macro (engine#10587)
  • [FIX] Fix ui-mesh-renderer in editor (engine#10582)
  • [FIX] Fix ios enter forground crash by useless appDelegateBridge (engine#10580)
  • [FIX] Fix cross fade bug introduced in #10485 (engine#10576)
  • [FIX] Fix skeletal animation state got update twice (engine#10571)
  • [FIX] Avoid creating the window twice (engine#10566)
  • [FIX] Fix animation event type typing (engine#10562)
  • [FIX] Animation state bugfix (engine#10558)
  • [FIX] Fix watermark can not show normally (engine#10547)
  • [FIX] Fix sprite-frame size after repetitive dynamic creation of tiled map (engine#10535)
  • [FIX] Fix MTLTexture::doInit (engine#10532)
  • [FIX] Fix gfx::FrameBufferInfo rehash crash bug (engine#10525)
  • [FIX] Fix tiled show with pixel offset (engine#10523)
  • [FIX] Fix label Blend Factor bug for byte dance platform (engine#10516)
  • [FIX] Fix animation bug introduced from #10485 (engine#10512)
  • [FIX] Fix vec3 & vec4 transformAffine (engine#10508)
  • [FIX] Fix animation blending zero check (engine#10499)
  • [FIX] Fix pointer event when camera.orthoHeight changed (engine#10496)
  • [FIX] Fix Android websocket send string (engine#10495)
  • [FIX] Fix getUrlWithUuid smart hint issue (engine#10484)
  • [FIX] Fix punctual lights luminance * PI (engine#10480)
  • [FIX] Set light map clamp to border and fixed rebuild terrain weights (engine#10470)
  • [FIX] Clear Particle under UIMeshRenderer when play end (engine#10468)
  • [FIX] Fix: There is no need to execute updatePreview in the ready lifecycle (engine#10466)
  • [FIX] Fix fog accumulated error with multiple local lights (engine#10445)
  • [FIX] Fix templates and minor tweaks (engine#10434)
  • [FIX] Force update for spine color setting. (engine#10417)
  • [FIX] Fix opacity dirty bug when parent change (engine#10416)
  • [FIX] Fix gen-simulator (engine#10401)
  • [FIX] Fix animation not work caused by creating spine in a hided node (engine#10380)
  • [FIX] Fix 2D physics rotation error (engine#10373)
  • [FIX] Reset render data before set asset for spine/dragonbones (engine#10370)
  • [FIX] Fix crash caused by incorrect hash (engine#10359)
  • [FIX] Fix spine/dragonbones opacity update (engine#10349)
  • [FIX] Fix spine rendering confusion (engine#10348)
  • [FIX] Fix bug: reset renderer-component would not update model (engine#10342)
  • [FIX] Fix ios icon res lost (engine#10336)
  • [FIX] Fix compiling error with merged code (engine#10332)
  • [FIX] Fix: #11580 create new light source with unknown typed intensity in the inspector (engine#10324)
  • [FIX] Fix skinned mesh morph rendering (engine#10318)
  • [FIX] Avoid spine and dragon crash. (engine#10314)
  • [FIX] Fix spine in native platform can not get animation name (engine#10303)
  • [FIX] Fix dragonbones/spine sockets transform (engine#10260)
  • [FIX] Fix crash when app jump to camera (engine#10255)
  • [FIX] Fix translucent problem due to SurfaceView‘s limit (engine#10228)
  • [FIX] Fix unnecessary include for surface shader (engine#10220)
  • [FIX] Fix misuse of draw API on metal (engine#10195)
  • [FIX] Fix: linux build use static link. need add sndio lib (engine#10186)
  • [FIX] Fix ios device display effect (engine#10184)
  • [FIX] Fix spine binary data read issue. (engine#10172)
  • [FIX] Fix android 12 crash when using Vulkan backend (engine#10158)
  • [FIX] Fix fps calculation error for linux and QNX (engine#10141)
  • [FIX] Fix default scene camera clear flags is solid not skybox (engine#10132)
  • [FIX] Update ci yml files, add native/web prefix, cherry-pick from #10083 (engine#10104)
  • [FIX] Fix binding mappings (engine#10058)
  • [FIX] Fix shader code style (engine#10039)
  • [FIX] Fix decorator order issue in standalone mode (engine#9911)
  • [FIX] Fix keyframe editorExtras serialization (engine#9905)
  • [FIX] Fix pixels offset (engine#9829)
  • [FIX] Fix negative scale widget in editor (engine#9811)
  • [FIX] Particle alpha blend fix (engine#9784)
  • [FIX] Fix import relation (engine#9765)
  • [FIX] Fix bug that causes autoScrolling is always triggered in v3.5 (engine#9548)
  • [FIX] Fix crash: native model is destroyed but not removed from render scene (engine#9543)
  • [FIX] Update the split condition of RichText truncations (engine#10252)
  • [FIX] Fix iOS Simulator compile error when using TBB on Apple Silicon device (cocos-engine-external#232)
收起
3.4.2
10 Mar 2022

在 v3.4.1 中我们完善了 2D 渲染组件的数据提交和合批策略,由于这些是触及基础的改动,所以引发了一些 Tiledmap,Graphics 的问题。并且 Spine 和 Dragonbones 在 Android 浏览器上性能没有得到提升,这些问题都在 v3.4.2 版本中得到了集中的解决。

另外,在社区的积极测试和反馈下,我们也修复了一些编辑器相关的体验问题,比如脚本重新编译时导致的内存泄露、大项目构建 iOS 平台时资源拷贝的卡顿

3.4.1
25 Jan 2022

在 v3.4.1 中,我们重点修复了 v3.4.0 发布后用户反馈的问题,提升了稳定性。同时为了帮助开发者 v2.x 开发者升级到 v3,我们调整了 2D 渲染组件的合批策略,大幅度提升了 2D 渲染的整体性能表现,相比 v3.3 提升幅度可达到 20% - 70% 左右。性能测试结果我们也对比了 v2.x 版本,参考下面的对比图,绝大部分测试的表现都已经和 2.x 逼近或持平,小部分超过。

在 v3.4.1 中,我们重点修复了 v3.4.0 发布后用户反馈的问题,提升了稳定性。同时为了帮助开发者 v2.x 开发者升级到 v3,我们调整了 2D 渲染组件的合批策略,大幅度提升了 2D 渲染的整体性能表现,相比 v3.3 提升幅度可达到 20% - 70% 左右。性能测试结果我们也对比了 v2.x 版本,参考下面的对比图,绝大部分测试的表现都已经和 2.x 逼近或持平,小部分超过。

图例讲解:所有测试都是在中低端机完成,每张图标的四个区间依次为 Android Web、iOS Web、Android WeChat、iOS WeChat。另外原生平台上的整体性能提升在 3.6 的原生化版本中也会得到大幅度的优化,目前原生化的独立分支已经合并到 3.6.0 的开发分支中了

另外,为了未来允许在微信小游戏上开启 WebGL 2.0,我们也修改了微信平台的构建选项,增加了实验性质选项:支持跟随项目模块配置启用 WebGL 2.0,默认情况下关闭缩减包体。如果选择跟随项目模块配置,并且项目模块中勾选了 WebGL 2.0 渲染后端,那么未来等微信环境支持 WebGL 2.0 即可成功启用。

3.4.1 经过了个把月的论坛公测,期间有很多热心开发者(如 @ankoGo 和 @ankye)和我们保持了高频度的线上交流,这些宝贵的反馈建议帮助我们提高了版本的成熟度,非常感谢大家!

重要更新

  • 重构 2D 合批策略,RenderData 持有静态 VertexBuffer 内存,优化 2D 渲染全平台性能
  • 优化 2D 渲染组件状态管理,UV 和 Color 改为立即填充,避免污染 VB 状态
  • Material.copy 现支持接受 override 材质修改参数
  • 在微信上允许开启 WebGL 2.0,为未来支持 WebGL 2.0 的微信版本做准备
  • 小幅度优化粒子系统运行性能
  • 修复编辑器启动脚本过多的项目比较慢的问题
  • 修复编译模拟器会出现报错的问题
  • 限制 web 平台 dpr 最大为 2,修复 Android Web 端因此导致的性能下降
  • 修复事件派发优先级,让 UI 监听器永远优先于 input 事件监听器
  • 修复阴影部分情况下性能下降的问题
  • 修复 iOS/macOS 第二次调用 restart 异常退出问题
  • 修复 Android 平台进入后台游戏逻辑停止的问题
  • 修复 SkeletalAnimation sample 的独立使用问题
  • 修复动画 crossFade 时的错乱问题
  • 修复 TiledLayer 的颜色设置问题
  • 修复多 Camera 渲染到同一个 RenderTexture 上被覆盖的问题
  • 修复原生平台一些内存碎片问题
  • 修复 Label spacingX 属性没有序列化的问题
  • 修复 debug 模式 restart 后 profiler 消失的问题
  • 修复 burst 在暂停后重新播放表现不对的问题
  • 修复切换场景 UseHDR 按钮,效果相反的问题
  • 修复 iOS & Mac Safari 不支持 USE_REFLECTION_DENOISE 的问题
  • 修复 Cocos Play 与微信平台由 getSystemInfoSync 引入的性能下降的问题
  • 修复 Sphere Light 在 Android Web 上效果不正确的问题
  • 修复 windows 平台 debug 模式下,三个 cocos 游戏同时运行时的崩溃问题

已知遗留问题

  • Slider 在 ScrollView 中无法被平滑拖动的问题:计划在 v3.4.2 修复
  • SkeletalAnimation 在不调用 play 的情况下直接 setTime 无效的问题:v3.4.2 修复方案
  • 2D 粒子在部分情况下会产生闪烁:v3.4.2 修复方案
  • Dragonbones 在设置位置后需要调用 `ArmatureDisplay.markForUpdateRenderData` 才可以正确更新:v3.4.2 修复方案

详细更新列表

  • Android: Java flush game thread tasks [4193]
  • Fixed iOS keyboard hiding issue [4185]
  • Fixed mem status [4179]
  • M1 deferred rendering issue: fbf & write to same texture not fully support [4174]
  • Fixed the problem of deferred pipeline multi-execution transparent queue [4168]
  • Improved mesh buffer to avoid iOS14 performance drop [10015]
  • Added sprite frame event off & fix renderData hash bug [10012]
  • Fixed sprite rect bug [10011]
  • Removed deprecated in error map [10007]
  • Protect meshBuffer max vertex count [10005]
  • Changed macro for meshBuffer [10001]
  • Fixed touch event on IMAGE STENCIL mask component [10000]
  • Fixed TiledLayer’s color setting [9997]
  • Enable model after playing instead of onEnable [9991]
  • Fixed EventDispatcherPriority, ensure UI have higher priority than input [9976]
  • Cleared attachment for editor camera render area [4164]
  • Removed local reference array [4161]
  • Fixed Lighting stage feedback loop [4157]
  • Removed unnecessary include [4153]
  • Fill vb with 0 when allocate [9989]
  • Fixed spriteFrame apply time [9987]
  • Added MeshRenderData.resize for changing both buffer size and IA size [9986]
  • Fixed tiled map [9980]
  • Particle performance improve [9979]
  • Separated IA range and buffer range in MeshRenderData [9978]
  • Fixed planar-shadow normal is zero [4165] & [9975]
  • Fix: keep children with same layer in editbox [9971]
  • Avoid one MeshRenderData upload repeat [9969]
  • Request IA by pool [9967]
  • Fixed skeleton animation cross fade/play won’t stop last animation [9965]
  • Set opacity all time [9959]
  • Fixed Opacity cascade [9958]
  • Fixed no planar shadow on mac [9953]
  • Fixed particle switch cpu / gpu bug caused by alignment space [9952]
  • Adjusted PhysX initialization [9641]
  • Removed redundant autoreleasepool [4102]
  • Closed uv_handle_t [4106]
  • updateLightingMap sync to native-engine [4109] & [9828]
  • Removed origin code for twice call to java method [4114]
  • Allow tick() in background [4081]
  • Fixed Android+WebGL PS struct variables has unexpected mediump precision [4120] & [9863]
  • Fixed shadow queue performance [4119]
  • Fixed memory leak [4115]
  • Optimize fixedArea mode culling process [4124]
  • Fixed windows text alias [4128]
  • Added JsbBridgeWrapper[4125]
  • Combined planar-shadow calculations [4127]
  • Multiple Cameras support rendering to the same RenderTexture [4132] & [9924]
  • Change define(CC_DIR_SHADOW) to uniform(cc_lightDir.w) [4129] & [9921]
  • Position Delete & Normal Compress in deferred pipeline [4135] & [9939]
  • Open ddx ddy extension on safari WebGL1 [9820]
  • Added profiler reset [9806]
  • Fixed terrain _updateHeight texcoord error [9809]
  • Added burst restart [9832]
  • Fixed UseHDR button & Skybox HDR status [9843]
  • Added decorator “serializable” [9848]
  • Restrict DPR on Web platform [9850]
  • Improved GPU particle performance [9847]
  • Disable multi_draw extension on mobile [9835]
  • Cache systemInfo on Cocos Play platform [9856]
  • Fixed skeleton model receive shadow macro error and toon shadow display errors [9836]
  • Fixed shadow queue performance [9862]
  • Fixed mask not working with spine [9864]
  • Fixed define syntax error [9870]
  • Detach from scene before destroying Model/Light [9869]
  • Fixed set frame rate on runtime [9874]
  • Material.copy accepts overrides [9881]
  • Label string setter optimization [9880]
  • Fixed Color.fromHex Bug [9867]
  • Changed ts template [9883]
  • Optimized fixedArea mode culling process [9878]
  • Modified builtin texture generation + particle unit test [9841]
  • Updated Scheduler API [9815]
  • Fixed readPixels [9900]
  • Fixed skybox RGBE macro get invalid in startup and mipmap count is overridden [9904]
  • Fixed bug: remove all actions by tag [9876]
  • Fixed audio bugs [9889]
  • Fixed particle index count 0 [9885]
  • Jsb-event-handler for event dispatch [9879]
  • Fixed bug of builtin default texture [9916]
  • Refactored communication between skinned mesh renderer and skeletal animation [9787]
  • Added extra steps to the destroy functions to update the cached resources in GFX [9875]
  • Combing planar-shadow calculations [9903]
  • Fallback of shadow supports on Baidu [9897]
  • Prefab: Support the persistent flag [9884]
  • Fixed particle capacity issue[9910]
  • Support screen.devicePixelRatio [9926]
  • Fixed skeleton animation component play or cross fade [9930]
  • Animation controller api document [9866]
  • Fixed event processor list updating [9932]
  • Fixed multi touch bug [9917]
  • Fixed MOUSE_WHEEL event can’t be swallowed by node [9931]
  • Fixed audio buffer memory leak on ByteDance and Web platform [9933]
  • Improved compatibility for string of SystemEventTypeUnion [9934]
  • Particle culling loop fix [9922]
  • Fixed keyboard event listening on mobile [9935]
  • Fixed pointer event sorting after activating node [9906]
  • Fixed culling deprecated module [9937]
  • Fixed cc_base.d.ts [9944]
  • Add cpu & gpu particle culling unit test [9945]
  • Fixed planar-shadow plane offset sign issue [9946]
  • Fixed spine typing [9942]
  • Static vertex buffer accessor refactor for Batcher2D [9802]
  • Revert deprecate system event [9941]
  • Reset swallow state after event handling [9950]
  • Fixed some spine bugs [9948]

收起
3.4.0
20 Dec 2021

版本介绍

v3.4 是自 2021 年初 3.0 发布以来快速迭代后的一个年度收官版本,要的就是一个字:稳!这个版本研发和测试周期都比之前版本更长,也在社区进行了长达一个月的公开测试,在此也要感谢所有参与测试的开发者们!

在 v3.4 中不仅增加了像

3.3.2
11 Oct 2021

Hightlight

该版本主要功能是让引擎构建出来的原生应用可以支持 iOS 10+。为了支持 iOS 10+,引擎代码去除了对 C++17 的依赖。

引擎的有些功能依赖 C++17,有些功能对 Android API 有要求。为了方便开发者使用,编辑器的功能配置界面对于这些依赖进行了提示。比如,Android 使

3.3.1
17 Sep 2021

本次更新修复了一些已知问题,Cocos Creator 将持续优化性能,为开发者带来更好的使用体验!
以下是详细更新内容。

编辑器

  • 优化微信字节面板上物理实验室选项的显示,新建微信构建任务时,将会默认开启 Wasm 物理系统。开启后,将会覆盖项目设置的物理后端选择
3.3.0
24 Aug 2021

What's new

性能优化

在 3.3 版本中,我们继续重点优化了微信小游戏平台的加载性能和运行性能。所有内部项目升级后微信云测启动性能分都可以达到 80 分以上。

What's new

性能优化

在 3.3 版本中,我们继续重点优化了微信小游戏平台的加载性能和运行性能。所有内部项目升级后微信云测启动性能分都可以达到 80 分以上。

同时,我们进一步提升了原生引擎的绑定层级,在渲染管线之上的渲染场景部分也完成了原生化,光源、模型等渲染对象的收集过程使用原生实现,进一步提升了原生平台的性能。

还有一个附带的好处,由于绑定层级的向上迁移,一些底层的数据共享机制被解除了,比如 Pass,SubModel 等。这使得 JS 引擎上层的实现尤其是 UI 和 2D 渲染合批相关的数据更加简化,部分高频操作的数据结构从 TypedArray 还原为直接量属性,使得 Web 和小游戏平台的性能也得到了可见的提升。

优化场景编辑体验

  1. 优化场景相机的漫游模式,并增加了加速开关

2. 增加一个场景灯光的开关(默认打开)

3. 增加模型的最大最小坐标显示

4. 增加 Transform Gizmo 的吸附功能(通过移动,旋转,缩放的Gizmo操作时,按住 Ctrl 键,就可以按设定的步长进行值的增长

5. 优化大项目使用体验:降低编辑器内存使用,避免崩溃,优化卡顿

新版动画编辑器和动画数据升级

目前动画编辑器已在动画编辑器内置曲线编辑,与时间轴匹配,并支持任意关键帧之间的时间曲线编辑。

同时,在 3.3 中,我们也完成了动画数据的升级:引入了新的基础曲线类,重构了 AnimationClip,统一了动画和粒子系统使用的曲线数据。这些工作都是为了后续的完善动画系统而准备的,在后续版本我们将支持动画状态机编辑,Blend Tree 动画融合等高级功能。

除此之外,动画编辑器还完成了以下工作:

  • 支持动画根节点隐藏后的动画显示编辑;
  • 优化动画编辑器关键帧与小红线的遮挡关系以及关键帧大小、选中颜色等;
  • 动画编辑器支持按住 shift + 鼠标滚轮滚动来移动时间轴;

平台支持和构建系统优化

在 v3.3 中,我们加入了 windows x64 的构建选项,未来将逐步废除 win32 平台的构建。

在构建面板上,我们也做了诸多优化:

  • iOS 构建填配置选项支持目标 iOS 版本和签名相关的 developer id 配置
  • 构建勾选 md5Cache 后,支持给脚本添加 md5 后缀,确保版本更新;(来自论坛反馈
  • 由于微信部分版本已经支持 astc,目前开放了小游戏平台 astc 的压缩纹理配置;
  • 偏好设置 - Build 新增构建日志打开方式选项;
  • 构建插屏配置面板,支持直接拖拽文件系统的图片放置;
  • 命令行构建支持传入 logDest 指定日志输出路径;
  • 由于 Mac上退出码位数的限制,对命令行构建退出码做了修改;
  • 原生平台构建后将不能二次修改游戏名称;

阴影效果和设置优化

在之前的版本中,阴影的配置一直是一个比较让开发者困惑的功能,我们已经有完整的规划,正在逐步完善中,v3.3 会首先简化阴影的配置,优化软阴影算法,修复阴影的部分效果问题。配置上的调整包含:

  • Shadow color 被迁移为 Shadow saturation 的灰度调节选项,会自动迁移老版本的 alpha 通道
  • 软阴影选项从之前的 X9,X25 等改为 Soft 和 Soft2X
  • 简化阴影贴图的尺寸设置为 High,Medium,Low
  • 去除 SelfShadow 选项,现在都会默认开启自阴影计算

v3.1

v3.3

理系统完善

继 v3.1 支持 PhysX 物理后端以来,多套物理引擎的选择和使用也成为了我们重点关注的使用体验,在 v3.3 中我们不仅加强了物理功能,还尽可能统一了不同物理后端的物理表现。

  • 支持 CCD 连续碰撞检测功能
  • 增加碰撞体最小体积控制,避免节点零缩放导致的一系列问题
  • 支持 PhysX 物理打包字节平台更灵活的配置选项
  • 支持 Bullet 物理中全局控制是否允许自动休眠
  • 支持 Bullet 物理中射线检测过滤 trigger 碰撞体
  • 修复 Bullet 物理中刚体无附加现状的 local inertia

其他

  1. 音频系统在 v3.1 移除所有 AudioClip 资源上的播放控制接口后,开发者颇为不满,在 v3.3 中我们将播放控制接口以标记废弃的方式添加回 AudioClip 资源。我们仍然希望所有开发者能切换到使用 AudioSource 组件的方式来播放音频,这对于未来的音频系统功能强化至关重要。
  2. 输入事件以前是接收到事件就进行派发,如果事件响应逻辑复杂可能会影响到帧回调,导致帧率不稳,v3.3 已调整为帧间记录事件队列,统一在主循环中处理事件队列。
  3. View 和 Screen 接口进行了简化,废弃了一些平台相关接口,将部分 View 的窗口控制功能统一到 Screen 上

重点更新列表

Editor

  • 新版本动画时间曲线编辑和动画编辑器体验优化
  • 各模块曲线编辑器统一:粒子、动画等
  • 优化粒子曲线的编辑操作,添加重置坐标移动范围按钮,支持直接右键编辑关键帧点位置
  • 场景编辑器体验优化
    • 增加一个 场景灯光 的开关(默认打开)
    • 优化场景相机的漫游模式,并增加了加速开关
    • 增加模型的最大最小坐标显示
    • 增加 Transform Gizmo 的 吸附功能
  • 支持 HDR 文件导入,引擎内部处理 RGBE 编解码
  • 编辑器性能和体验优化
  • 当 Image 资源被改为 SpriteFrame 类型后,自动修改 texture 的 Clamp 配置为 CLAMP_TO_EDGE,避免边缘混合黑边问题
  • 支持在带动画模型的属性面板上直接编辑动画事件
  • 修正编辑器内的资源泄露问题,降低内存占用
  • 针对微信小游戏平台开启 ASTC 压缩纹理配置
  • 优化 hierarchy 面板性能,增加 prefab 节点直接进入 prefab 资源的编辑功能
  • 优化 console 面板性能,修复大量 log 数据拖慢启动速度的问题
  • Color picker 支持 color gamma 矫正预览
  • Inspector 中支持组件属性的分组显示,使用 group 装饰器
  • inspector 编辑节点增加复制节点世界坐标
  • 支持显示烘焙结果的 rgb 通道的单个灰度图或者通道的组合
  • 支持自定义的脚本模板,同时在生成脚本时可以使用部分预设变量
  • 支持 Windows 平台上带中文的安装目录
  • iOS 构建填配置选项:目标 iOS 版本,签名相关的 developer id
  • Windows 平台添加生成平台选项,支持 x64 和 win32 选项
  • 支持脚本 import map
  • 添加了清理代码缓存的功能,入口位于菜单:[开发者]-[缓存]-[清理代码缓存] 
  • 编辑器右下角添加引擎版本与编辑器版本不一致的提示
  • Electron 升级到 13.1.4
  • 修复 m1 cpu 的设备构建项目时偶现的进度条停止问题

Engine

  • 优化标准光照模型中的 AO 计算
  • 阴影参数和渲染优化
    • 修复阴影效果,优化阴影边缘虚化算法
    • 将 Shadow Color 迁移为 Shadow Saturation 单通道选项,会自动迁移老版本的 alpha 通道
  • 软阴影选项从之前的 X9,X25 等改为 Soft 和 Soft2X
  • 简化阴影贴图的尺寸设置为 High,Medium,Low
  • 去除 SelfShadow 选项,现在都会默认开启自阴影计算
  • 引入通用曲线类(Curve)
  • 重构 AnimationClip,动画数据重构升级:为动画状态机和复杂动画融合做好准备
  • 优化微信小游戏首屏渲染速度
  • 修复了 UI 透明度级联导致的渲染问题
  • 修复了 Label 重复加入动态合图的问题
  • 粒子曲线使用统一的 Curve 数据
  • 物理引擎
    • 统一各个物理后端的行为表现
    • 支持 CCD 持续碰撞检测
    • 增加碰撞体最小体积控制,避免节点零缩放导致的一系列问题
    • 支持 PhysX 物理打包字节平台更灵活的配置选项
    • 支持 Bullet 物理中全局控制是否允许自动休眠
    • 支持 Bullet 物理中射线检测过滤 trigger 碰撞体
  • 烘培库支持 mac m1 cpu 设备
  • 字节小游戏音频使用 WebAudio 接口实现
  • 事件系统
    • 所有输入事件归拢到游戏主循环中处理
    • AudioSource 支持监听音频开始和结束事件 AudioSource.EventType.STARTED & AudioSource.EventType.ENDED
    • SystemEventType 和 macro.KEY 已经废弃了,改用 SystemEvent.EventType 和 KeyCode
    • 废弃了 SystemEventType,以及 SystemEventType 底下的一些系统事件无关的枚举,请使用 SystemEvent.EventType
    • 废弃静态属性 Event.TOUCH, Event.MOUSE, Event.KEYBOARD, Event.ACCELERATION
  • 简化废弃部分 view 和 screen 接口,统一在平台适配层(PAL)中实现
    • 废弃 view.adjustViewportMeta 和 view.isAutoFullScreenEnabled
    • 废弃 view.enableAutoFullScreen,请使用 screen.requestFullScreen
    • 废弃 cc.winSize,请使用 view.getVisibleSize
    • 废弃 screen.autoFullScreen,请使用 screen.requestFullScreen
    • 废弃 screen.disableAutoFullScreen
  • 修复移除 Spine 动画可能导致的内存泄露(感谢 Github PR from @hailua54)

Infrastructure

  • 渲染场景模块原生化:优化原生平台性能
  • 使用可控的离屏 FrameBuffer 进行内容渲染
  • 基于离屏 FrameBuffer 支持 MSAA 抗锯齿(开启项目宏 Enable Antialias 生效):注意,如果之前开启了该项目宏,那么升级为 3.3 之后原生平台性能损耗会有所增加,这是正常情况
  • 内置 Frame Graph 渲染定制层,后续版本将接入渲染管线,开放定制接口给用户
  • 在 Vulkan & Metal 后端支持 Subpass
  • 添加 M1 CPU 的苹果设备上使用 iOS Simulator 调试的能力,需要参考文档使用
  • binding generator 全面兼容 python 2.7 / 3.x (64 位)

Breaking changes

  • 构建压缩纹理不再带有默认 png 图,如果使用到这个特性的项目,请在项目配置内为已有的压缩纹理配置添加默认图(来自论坛反馈
  • 目前已支持 HDR 贴图直接导入,之前如果使用 RGBE 格式的 .png 请替换为原始 .hdr 贴图
  • 我们修复了一处 FBX 资源导入问题:若 FBX 模型含有多段动画,第二段及后续的动画都错误地包含了前段的所有动画数据。注意:如果已经配置了动画分割,则可能需要调整。不过我们并未收到外部开发者关于此问题的反馈。

Known Issues

  • 原生平台 Bullet 后端射线检测性能有所下降,我们将在下个小版本修复此问题,可暂时切换到 PhysX 后端进行使用或减少每帧射线数量
  • 3D 粒子 startSpeed, startRotation, gravityModifier 属性在 Curve 模式下可能出现显示异常,将在下个小版本修复此问题

级说明

从 < 3.1.0 版本升级

  • 从 v3.1 开始,UITransform 组件的 priority 属性已弃用,若需要调整节点树的顺序请使用 setSiblingIndex 方法。在 v3.1 之前通过代码创建并依赖 priority 属性的节点可能会出现节点树表现和之前不一致的问题,请手动调整。
  • RenderTexture 在不同平台上会出现正反不一致的情况,为了解决这个问题,Creator 为 effect 新增了 SAMPLE_FROM_RT 宏,在使用 RenderTexture 时,需要将 SAMPLE_FROM_RT 宏设置为 true,各后端便会统一适配至正确的效果。
  • 在 v3.1 中材质 Shader API 与 v3.0 有一定的差异,请参考 v3.0 材质升级指南v3.1 材质升级指南 进行手动升级。

从 < 2.4.5 版本升级

Cocos Creator 3.x 版本已经正式发布,2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,

  • 现有的 2.x 项目可以安心继续开发,无需强制升级 3.0。
  • 现有的 2.x 项目因项目需求如想升级到 3.x,可以使用 Creator 提供的 2.x 资源导入工具。此工具将支持旧项目资源完美导入,以及代码的辅助导入。代码辅助导入会把 js 转换成 ts,添加组件类型声明、属性声明及函数声明,组件在场景中的引用都会得到保留,并且函数内部的代码会以注释的形式导入进来,可以减轻开发者的升级难度。详细的升级说明请参考 升级指南
  • 新项目则建议使用 3.0 版本开发,我们会不断优化 3.0 的开发体验和运行效率,支撑好 2D、3D 等不同品类的重度游戏顺利上线。

Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。

收起
3.2.1
10 Aug 2021

Cocos Creator v3.2.1 是我们将 v3.1.2 合并到 v3.2.1 而来,继续在大版本分支上给大家带来更稳定的体验,v3.2 用户和 v3.1.x 用户都可以无痛升级。

Improvement

  • Web & 小游戏 2D 渲染性能优化
  • 优化小游戏启动性能
  • 优化
3.2.0
18 Jun 2021

Cocos Creator 3.2 正式支持 HarmonyOS,成为全球首家支持 HarmonyOS 的游戏引擎。与此同时,Creator 与字节跳动平台进行了深度合作,以实验性功能支持在字节小游戏中使用平台提供的 PhysX 物理能力!欢迎所有开发者使用与体验!以下是详细更新内容。

What's new

Cocos Creator 3.2 正式支持 HarmonyOS,成为全球首家支持 HarmonyOS 的游戏引擎。与此同时,Creator 与字节跳动平台进行了深度合作,以实验性功能支持在字节小游戏中使用平台提供的 PhysX 物理能力!欢迎所有开发者使用与体验!以下是详细更新内容。

What's new

支持构建 HarmonyOS 应用

在 3.2 版本,Creator 将支持一键将游戏打包为 HarmonyOS 应用,在配置 HarmonyOS SDK 与 NDK 路径后,可在构建面板选择 HarmonyOS 一键打包,详细操作请参考文档 发布 HarmonyOS 应用

字节跳动小游戏支持使用平台提供的 PhysX 能力

字节跳动平台一直致力于为开发者提供最强大的性能和基础能力,抖音将在 16.3 之后版本为小游戏提供 PhysX 原生物理接口,而 Creator 与字节跳动平台进行了深度合作,在 3.2 中以实验性功能支持在字节小游戏中使用平台提供的 PhysX 物理能力,优化物理运算性能,对比 Bullet 有近 100% 的性能提升。

可以在构建面板选择是否开启多线程:

升级说明

从 < 3.1.0 版本升级

  •  从 v3.1 开始,UITransform 组件的 priority 属性已弃用,若需要调整节点树的顺序请使用 setSiblingIndex 方法。在 v3.1 之前通过代码创建并依赖 priority 属性的节点可能会出现节点树表现和之前不一致的问题,请手动调整。
  • RenderTexture 在不同平台上会出现正反不一致的情况,为了解决这个问题,Creator 为 effect 新增了 SAMPLE_FROM_RT 宏,在使用 RenderTexture 时,需要将 SAMPLE_FROM_RT 宏设置为 true,各后端便会统一适配至正确的效果。

从 < 2.4.5 版本升级

Cocos Creator 3.x 版本已经正式发布,2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,

  • 现有的 2.x 项目可以安心继续开发,无需强制升级 3.0
  • 现有的 2.x 项目因项目需求如想升级到 3.x,可以使用 Creator 提供的 2.x 资源导入工具。此工具将支持旧项目资源完美导入,以及代码的辅助导入。代码辅助导入会把 js 转换成 ts,添加组件类型声明、属性声明及函数声明,组件在场景中的引用都会得到保留,并且函数内部的代码会以注释的形式导入进来,可以减轻开发者的升级难度。详细的升级说明请参考 升级指南
  • 新项目则建议使用 3.0 版本开发,我们会不断优化 3.0 的开发体验和运行效率,支撑好 2D、3D 等不同品类的重度游戏顺利上线。

Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。

收起
3.1.2
15 Jul 2021

v3.1.2 是在 v3.1.1 上优化体验和性能的版本,这个版本的更新内容是不包含在 v3.2 中的,之后会将 v3.1.2 的更新合并到 v3.2.1 和 v3.3.0。

从 3.1.0 之后引擎组其实一直在并行推进三个版本线,v3.2.0, v3.1.x, v3.3.0,其中 v3.2 由于有配合鸿蒙 2.0 发布的需求,所以发布日早就定下了,为了稳定性其实主要就是在 v3.1.1 基础之上增加了鸿蒙

3.1.1
01 Jun 2021

Cocos Creator 3.1.1 主要修复了 v3.1 出现的稳定性问题,并优化了编辑器工作流。欢迎所有开发者使用与体验!升级前请做好相关文件备份哦!以下是详细更新内容。

Improvement

  • 新增在资源管理器面板创建 Prefab 资源的功能
3.1.0
12 May 2021

3.0 版本的推出标志着 Creator 迈向了一个全新的征程,而 Creator 3.1 就是征途上的第一块基石,此次版本更新带来了很多非常棒的新特性,包含华为海思团队贡献的延迟渲染管线,PhysX 物理后端的支持等等;同时,相对 3.0 版本,各方面的性能也得到了优化,例如帧动画性能,加载性能,包体等等。我们将会在 3.x 的基础上继续深耕,用真诚的态度和敬业的精神,踏踏实实完善产品体验,普惠所有开发者。欢迎所有开发者使用与体验!升级前请做好相关文件备份哦!

3.0 版本的推出标志着 Creator 迈向了一个全新的征程,而 Creator 3.1 就是征途上的第一块基石,此次版本更新带来了很多非常棒的新特性,包含华为海思团队贡献的延迟渲染管线,PhysX 物理后端的支持等等;同时,相对 3.0 版本,各方面的性能也得到了优化,例如帧动画性能,加载性能,包体等等。我们将会在 3.x 的基础上继续深耕,用真诚的态度和敬业的精神,踏踏实实完善产品体验,普惠所有开发者。欢迎所有开发者使用与体验!升级前请做好相关文件备份哦!

What's new

  • 新增延迟渲染管线(感谢华为海思团队的贡献),可在项目设置中选择延迟渲染管线
  • 引入多线程渲染架构。在原生平台上,传统的单线程架构已无法满足大规模场景的渲染,因此,Creator 在 v3.1 中将传统的单线程架构初步拆分为了渲染线程和设备线程两个主线程。除了主线程的拆分外,Creator 还将 command buffers 的提交过程并行化,加快渲染效率。多线程渲染架构图如下:
  • 增加 PhysX 物理支持,目前支持除了安卓 x86 之外的原生平台,在 iOS 上有 100% 以上的性能提升(若需要在 web 平台上预览可以参考 example-3d 里面的 physics-3d 工程,主要修改内容在 preview-template 文件夹中)
  • 编辑器支持骨骼八面体展示,可以直观看到模型骨骼的分布状态
  • 支持在 FBX/glTF 资源的 Inspector 上预览动画
  • 开放新版曲线编辑器,支持分别编辑左右斜率,支持直接显示曲线的循环模式
  • 安卓平台支持构建 x86_64 架构
  • 支持在 Prefab 实例上添加/删除组件
  • Mac 构建新增 支持 M1 选项,用于更好地对一些已知的引擎模块在 Apple M1(Silicon)架构的设备上的支持问题做提示
  • 添加场景即时缓存的实验室功能,默认开启,可在场景异常退出后恢复数据
  • 编辑器添加 ui-curve、ui-curve-editor 组件,插件开发者可在插件中直接使用

Improvement

  • 提升引擎原生平台运行性能
  • 提升引擎帧动画运行性能
  • 提升运行时资源加载速度(构建模式)
  • 优化动画编辑器在编辑大数量关键帧时的卡顿问题
  • 自动图集面板新增针对 Bundle 内使用自动图集的优化选项,共增加三个选项,用于自动图集在 Bundle 内时的一些不必须信息剔除,优化包体
  • 优化自动图集被多个 Bundle 引用导致图片被复制的问题,减少包体
  • Shadow Map 支持了线性深度,深度图压缩(与线性深度功能互斥),自阴影效果,以及 normal bias 参数设置
  • Lighting Map 支持 RGBE 格式

Editor

  • 优化动画编辑器的事件编辑面板,避免产生空函数数据
  • 构建的输出地址修改为支持协议头的路径
  • 构建导出配置支持跨版本导入使用
  • 构建面板添加校验机制,数据填写错误时将无法构建
  • 优化部分小游戏平台打包 rpk 的输出日志
  • 优化构建输出 log 信息,修复日志丢失问题
  • 优化资源丢失处理,可以在资源恢复后自动还原
  • 新建 Button 默认对 Label 节点上锁,方便在场景中选中
  • 修复从 Prefab 退出可能引起的场景数据问题
  • FBX 导入时可选择动画烘焙速率
  • 解决部分 FBX 导入会导致编辑器卡死的问题
  • FBX/glTF 增加导入选项“提升单一根结点”
  • 修复了 TiledMap 导入 .tmx 资源时丢失问题

Engine

  • 修复了 TiledMap 动画失效问题
  • 修复了 Spine 在原生下预乘不生效的问题
  • 修复了 Spine 开启预乘下设置透明度显示异常问题
  • 修复了部分机型 Vulkan 驱动不兼容问题
  • 修复 Metal 相关平台 Shadow Map 显示错乱问题。

Breaking Changes

  • 移除了 AudioClip 的播放接口,并且不支持 started 事件监听,AudioClip 现在是纯音频资源类型
  • effect 资源中不能再直接调用 CCStandardShading 函数,统一封装进 CC_STANDARD_SURFACE_ENTRY 宏定义,建议只在 surface 函数中做自定义逻辑
  • GFX 模块改名,去掉 GFX 前缀,统一使用 import { gfx } from 'cc';
  • 构建面板上移除了自动图集、压缩纹理开关,项目在配置了自动图集与压缩纹理后将会直接处理
  • 弃用 cc-fog 头文件,改用 cc-fog-vs 和 cc-fog-fs
  • 移除了 sys 下的部分常量 sys.LINUX,sys.BLACKBERRY,sys.EMSCRIPTEN,sys.TIZEN,sys.WINRT,sys.WP8,sys.QQ_PLAY,sys.FB_PLAYABLE_ADS

Known Issues

  • 微信 PC 端的键盘和鼠标适配有问题,我们将在 v3.1.1 里修复这个问题,你可以手动合并此 PR 修复 #8626
  • SafeArea 组件暂时无法正常使用,我们将在 v3.1.1 里修复这个问题,你可以通过手动合并此 PR 来解决此问题 #8652
  • 在 Sprite 设置完 RenderTexture 后需要手动调用下 Sprite.updateMaterial 函数,否则在某些平台下可能出来图像翻转

升级说明

从 < 3.1.0 版本升级

  •  UITransform 组件的 priority 属性从 3.1 开始不建议使用, 设置 priority 属性来排布节点顺序的方法弃用,请使用 setSiblingIndex 方法改变节点树顺序。通过代码创建添加并依赖此属性的节点可能会遇到节点树表现和之前不一致的问题,请手动调整。
  • RenderTexture 在不同平台上会出现正反不一致的效果,Creator 为 effect 新增了 SAMPLE_FROM_RT 宏,当需要使用 RenderTexture 时,需要设置 SAMPLE_FROM_RT 宏为true,此时各后端会统一适配至正确的效果。

从 < 2.4.5 版本升级

Cocos Creator 3.x 版本已经正式发布,2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,

  • 现有的 2.x 项目可以安心继续开发,无需强制升级 3.0
  • 现有的 2.x 项目因项目需求如想升级到 3.x,可以使用 Creator 提供的 2.x 资源导入工具。此工具将支持旧项目资源完美导入,以及代码的辅助导入。代码辅助导入会把 js 转换成 ts,添加组件类型声明、属性声明及函数声明,组件在场景中的引用都会得到保留,并且函数内部的代码会以注释的形式导入进来,可以减轻开发者的升级难度。详细的升级说明请参考 升级指南
  • 新项目则建议使用 3.0 版本开发,我们会不断优化 3.0 的开发体验和运行效率,支撑好 2D、3D 等不同品类的重度游戏顺利上线。

Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。

收起
3.0.1
14 Apr 2021

Creator 3.0 版本作为引擎组的新基线版本,统一了 2D 与 3D 的开发工作流,兼顾了轻量与重度游戏的开发体验,融合了几乎所有 Creator 2.x 与 Creator 3D 1.x 版本的功能。一经推出就受到了大家的踊跃尝试与使用,并收到了许多积极反馈。而此版本主要面向 3.0 版本以来的问题修复与使用体验优化。我们将会在 3.x 的基础上继续深耕,用真诚的态度和敬业的精神,踏踏实实完善产品体验,普惠所有开发者。欢迎所有开发者使用与体验!升级前请做好相关文件备份哦!

Creator 3.0 版本作为引擎组的新基线版本,统一了 2D 与 3D 的开发工作流,兼顾了轻量与重度游戏的开发体验,融合了几乎所有 Creator 2.x 与 Creator 3D 1.x 版本的功能。一经推出就受到了大家的踊跃尝试与使用,并收到了许多积极反馈。而此版本主要面向 3.0 版本以来的问题修复与使用体验优化。我们将会在 3.x 的基础上继续深耕,用真诚的态度和敬业的精神,踏踏实实完善产品体验,普惠所有开发者。欢迎所有开发者使用与体验!升级前请做好相关文件备份哦!

What's New

  • 移除选项“模拟全局变量”,新增选项“执行作用域”

可选值为 Global 或 Enclosed。当为 Global 时,直接在目标环境中执行该脚本。当为 Enclosed 时,将整个脚本包裹在 IIFE 函数中执行,这意味着脚本顶部以 var 声明的变量不会提升为全局变量。

  • 增加将场景相机对齐到某个节点上的功能
  • 增加 2D/3D 模式切换快捷键(数字键2)

Improvement

  • 当项目中试图引用 Node 模块时给予更明确的提示
  • 构建时消除包体中项目脚本冗余代码
  • 优化微信引擎分离功能与模块剔除,减小包体
  • 支持了 BMFont 使用透明通道分离格式的压缩纹理 #8364

Editor

  • 修复命令行构建将会新增构建任务的问题
  • 修复特定情况下快捷键面板的快捷键可能无法被修改成功的问题
  • 修复右键删除多个选中动画事件有延迟的问题
  • 修复骨骼动画在动画编辑器内不能正常的点击属性轨道以及移动小红线查看等等问题
  • 修复创建构建插件后需要手动刷新插件管理器才能显示的问题
  • 修复 Mac 上插件管理器导入插件失败的问题
  • 修复插件商城关闭时弹出警告的问题
  • 修复引擎主光源与烘培效果存在差异问题
  • 修复烘培非 n*n 地形错误的问题
  • 修复编辑粒子节点的界面存在的缓存问题
  • 修复图片为 textrue 类型时不显示子资源编辑界面的问题
  • 修复快捷键配置面板无法滚动的问题
  • 修复切换场景后地形节点的地形刷没有重置的问题
  • 修复 M1 设备上无法构建 iOS 工程的问题
  • 修复 glTF 资源导入的时候,可能丢失子资源的问题
  • 修复创建的构建插件模版文件无法修改问题
  • 修复预览的时候,scene.name 丢失的问题

Engine

  • [SPINE] 修复 SkeletonTexture 类型没有导出的问题 #8359
  • [UI] 修复 iOS 14 上静态合批组件渲染不正确的问题 #8320
  • [UI] 修复 RichText 组件的换行不正确的问题 #8345
  • [UI] 修复了 Mask 点击穿透的问题 #8313
  • [UI] 修复了 Widget 的 always 模式的问题 #8304
  • [UI] 修复了 Mask 内存泄漏的问题 #8375
  • [SHADOW] 修复了平面阴影在 instancing 下,设置额外的纹理报错的问题 #8336
  • [SHADOW] 修复了 Nvidia 显卡下,透明模型开启 shadow map 后渲染错误的问题 #8303
  • [SHADOW] 修复了平面阴影在多光源下,不显示的问题 #8328
  • [TWEEN] 修复 Tween 不支持自定义缓动函数的问题 #8321
  • [PHYSICS] 修复未启用时刚体的初始化类型不正确的问题 #8307
  • [PHYSICS] 修复 Ammo 运行时设置网格不生效的问题 #8315
  • [ASSET] 修复了在 WebGL2 环境下 ETC1 格式压缩纹理的渲染问题 #8351

Native

  • 修复原生 Spine/Dragonbones 节点 active 更改后无法显示的问题 #8323
  • 修复 Win32 / macOS 平台 EditBox 回车无法结束编辑的问题 #3295 

Breaking Change

  • 缓动系统更新时机从 lateUpdate 阶段之后更改为 update 阶段之后,可能需要调整处理时机 #8305
  • 为了适配 M1,重新编译了第三方库,要求 Xcode 版本为 11.5+

Known Issue

  • 在导入含有负帧动画的 FBX 时可能造成编辑器不工作,请在相应 DCC 工具中确定没有负帧动画出现,之后版本将修复此问题
  • 原生平台 Spine 预乘渲染不正确,之后版本将修复此问题

升级提示

Cocos Creator 3.x 版本已经正式发布, 2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,

  • 现有的 2.x 项目可以安心继续开发,无需强制升级 3.0
  • 新项目则建议使用 3.0 版本开发,我们会不断优化 3.0 的开发体验和运行效率,支撑好 2D、3D 等不同品类的重度游戏顺利上线。

Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。详细的升级说明请参考升级指南,如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。

收起
3.0.0
07 Feb 2021

在 3.0 预览版发布后,引擎组收到了大量开发者的热情反馈,引擎组工程师们动力倍增,经过了又两个月的迭代后,终于将这灌注了汗水与热血的产品正式推出。Creator 3.0 统一了 2D 与 3D 的开发工作流,兼顾了轻量与重度游戏的开发体验,融合了几乎所有 Creator 2.x 与 Creator 3D 1.x 版本的功能,而这一切都是建立在 Creator 3.0 更加健壮的面向未来的底层架构上,这对引擎组来说是个具有重要意义的里程碑。我们会在 3.0 的基础上继续深耕,用真诚的态度和敬业的精神,踏踏实实完善产品体验,普惠所有开发者。3.0