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

 

Features

Engine

  • 管线完善了对多光源、CSM、多光源阴影的支持。web 管线启用了对象池
  • 重构 OpenHarmoney 平台层 NAPI 适配的代码
  • 优化 XR 集成逻辑,在 XR 关闭的情况下 XRInterface.cpp 不参与编译
  • 升级 V8 到 11.6.189.22 版本
  • 引擎仓库开发环境适配到 NodeJS 18.x
  • 支持从项目配置文件 settings.json 中读取同时下载文件的的最大数量

Editor

  • 优化构建任务用时显示
  • 调整项目设置各个模块面板的滚动条,优化纹理压缩界面交互
  • 升级 ASTC 工具到 4.6.0
  • 避免预览获取 settings 抛异常时不返回,修复预览的错误界面显示时机
  • 优化纹理压缩任务调度,优化压缩时的构建进度显示
  • 优化编译引擎缓存使用,修复编译引擎可能出现缓存 cc.js 无法找到反馈来源
  • 支持命令行独立发布 Bundle,文档参考
  • 对外开放构建自定义面板插件机制,构建插件模板内已更新示例 参考文档
  • 属性检查器在多行文本上允许拖拽输入框更改输入框大小
  • 支付宝压缩纹理,构建增加支持 astc
  • Web 平台上,构建面板中新增「目标环境」配置选项。默认覆盖最大范围的浏览器,如果 polyfills 「异步函数」和「标准库」都勾选,src/polyfills.bundle.js 文件会增大 70KB 左右。开发者可根据项目自身的覆盖情况,调整此参数,比如设置为:> 0.4% ,字段的含义具体请参考:Browserslist

Fixes

Engine

  • 修复 Spine setTrackXXXListener 在 Web 不生效的问题
  • 修复 Spine 内存泄漏
  • 修复升级到 Xcode 15 导致的 std::unary_function 找不到的报错问题
  • 修复 wasm 文件修改后,对应的 js 文件名的 md5 值不变的问题
  • 修复原生平台上把 gfx webgl/webgl2 后端的代码也打包的问题
  • 修复 build-engine 模块传入 visualize 参数时的报错问题
  • 修复获取字符定义为空时,报异常而不是错误的问题
  • 修复小米平台音频退出时,出现的异常问题
  • 修复重复构建android平台时,配置不生效的问题

Editor

  • 修复导入资源包后,新建脚本不会运行只能重启,Issue
  • 修复导入构建配置后缺失 bundle 内的场景数据时未自动补全
  • 修复 Blender 导出的 PNG 格式图片导入失败反馈来源
  • vivo 平台构建后的 remote 目录由原来的 src/remote 调整到根目录的 remote 下
  • 修复从动画模式打开其他预制体提示查找不到节点数据的问题
  • 修复频繁修改脚本可能出现预览卡死
  • 修复编译引擎可能出现缓存 cc.js 无法找到的问题,反馈来源
  • 修复模拟器在使用自定义管线的时候可能出现闪退的问题
  • 修复修改相机的 rect 值,在场景中不生效的问题
  • 修复光照探针烘焙后,移动探针位置,探针点烘焙效果丢失的问题
  • 修复重启项目后,反射探针在场景中与包围盒分离(windows系统)
  • 修复面板频繁弹出放入窗口,造成内存泄漏的问题
  • 修复原生平台勾选加密脚本压缩选项后实际没有压缩效果
收起
3.8.1
24 Oct 2023

Features

Engine

1.  新增自定义管线 Subpass、MSAA 支持

2.  动画图恢复了对非骨骼动画(AnimationClip)支持

3.  脚本系统开始支持解析符号链接,以用于支持 pnpm 等依赖符号链接的包管理器。(现在默认对符号链接进行解析,此举可能影响那些将 assets 目录链接至项目的做法)。

4.  添加了 iOS 对屏幕边缘手势的延迟触发以防止误触

5.  添加了原生平台对 http 请求的 patch 方法支持

6.  添加了 RichText 的默认颜色接口

7.  新增钢琴烤漆、车漆和玻璃材质

示例:https://github.com/cocos/cocos-example-materials 场景:assets\advanced-cases\coat\coat.scene

8.  HDR Scene 面板增加 PostSettings项,Tone Mapping Type 提供 DEFAULT LINEAR 选项

9.  新增实验性质的 Box2D wasm

10.  新增角色控制器 Trigger 事件支持 角色控制器组件 碰撞体 监听 onControllerTriggerEnter,onControllerTriggerStay,onControllerTriggerExit

11.  支持动态改变 MeshCollider Mesh

12.  换用更稳定的 mesh simplify 工具

13.  新增 mesh cluster 的支持

14.  新增 mesh quantize 的支持

15.  新增 mesh encode/decode 和 inflate/deflate 的支持

a. 面板选项

b. 大场景加载/渲染的性能提升

 

Editor

1.  偏好设置添加 Java Home 路径设置,用于解决 Android 构建时设备安装多个 JDK 的问题

2.  Android 构建面板添加 Resizeable Activity 和 Max Aspect Ratio 选项

3.  抖音小游戏支持配置开发者工具启动模式并快捷启动

4.  微信小游戏平台默认开启 CLEANUP_IMAGE_CACHE,其他平台默认跟随项目设置

5.  材质、模型、Mesh 及骨骼动画的预览窗口添加了网格、天空盒以及 Scene Gizmo,同时支持控制预览视角

6.  新增 3D 工具可见性开关,关闭后将隐藏变换工具以外的 3D Gizmo

7.  属性检查器支持拖动调节属性名宽度

8.  属性检查器支持显示部分组件图标

9.  优化 Light 和 Camera 组件的 visiblity 在属性检查器中的显示效果

10.  减少内置引擎的 boost 库的文件数量,缩减编辑器包体

11.  其他细节体验优化

 

Fixes

Engine

1.  修复自定义管线特定条件下渲染错误问题

2.  修复动画图变体未对嵌套的状态机生效的问题

3.  forceLOD 调用后,改变节点的 active,接口不能正常工作

4.  优化 android 端 editText 输入框的交互

5.  修复 editbox 旋转后, 在 web-mobile 上可能出现的错误显示效果

6.  修复 Mac 切换窗口和全屏时 editbox 的输入表现错误

7.  修复 Android 多点触摸崩溃问题

8.  修复音效播放过程锁屏,解锁屏后不能恢复播放

9.  修复 iOS Safari web audio 播放超过 5 分钟后会有杂音的问题

10.  修复 audioManager 存放的 player 可能被 destroy 的问题

11.  优化同一帧调用同一个音频对象的多个音频操作可能存在卡顿的问题

12.  淘宝小游戏 iOS 平台:修复多次调用音频 play 进度条会一直卡在 0 的问题

13.  小米平台:修复音频播放时,拖动进度条,进度条会从 0 的位置再跳转的问题

14.  修复小游戏批平台,播放的音频个数超过 10 个后,继续调用其他音频的播放接口可能导致内存泄漏问题

15.  修复 videoplayer 暂停&结束后通过 isPlaying 接口获取的状态错误

16.  修复切换 video 源时可能出现的异常表现

17.  修复 swig 绑定重载构造函数时绑定代码丢失命名空间的问题

18.  修复 swig 绑定多级(>= 2) 内部类导致的异常问题

19.  修复在 .i 中重命名内部类导致胶水代码编译失败的问题

20.  修复原生平台上 scene._instantiate 实现不对的问题

21.  修复非安卓平台,反复重启 `game.restart()` 导致的崩溃或者卡死问题

22.  修复编辑器中 scale 不为 1 时 widget 带来的场景错乱问题

23.  修复 Button 组件在启动时会使用 Sprite 组件的 spriteFrame 覆盖本身 normalSprite 的 bug,将按 button 组件序列化的数据来填充 spriteFrame 状态。

24.  修复 ScrollView 使用鼠标滚动后,scrolling 属性始终为 true 的 bug

25.  修复带 carmera 的场景,点击鼠标会出现偏移的 bug

26.  修复 OpenHarmony 收到 resize 之后,分辨率出现不正确的 bug

27.  修复 OpenHarmony 取消勾选 WebSocket 之后出现链接的问题

28.  修复自定义管线中 Fog AO 半透明等混用的渲染错误(需要开启 CC_USE_FLOAT_OUTPUT 宏)

29.  修复反射探针烘焙和移动更新的问题,并优化原生引擎调用性能

30.  修复切换雾效类型天空盒不受影响的问题

31.  修复创建的默认 SphereCollider Center 不为 0 的问题

32.  角色控制器调用 move 方法时会马上将其物理世界位置同步到场景节点

33.  修复使用 Xcode 15 编译 iOS 项目导致的程序启动崩溃问题

 

Editor

1.  修复碎图和图集同时配置纹理压缩时导致的运行时报错

2.  修复自动图集在压缩纹理后仍包含原图的问题

3.  修复图集被多个 Bundle 引用并且 bundle 优先级一致时纹理压缩图片拷贝异常的问题

4.  修复 Bundle config 重定向配置存在重复数据的问题

5.  修复空 Bundle 不输出 config.json 的问题

6.  修复 Bundle 中的文本资源包含 uuid 时构建依赖信息错误的问题

7.  修复 Bundle 构建面板的输出目录无法选择的问题

8.  修复只构建 Bundle 后构建面板无法新建构建任务的问题

9.  修复构建任务名称修改后切换构建模式,任务名称可能出错的问题

10.  修复插件脚本里实现组件后,预览和构建时报错类重复注册的问题

11.  修复勾选初始场景分包后,脚本、资源可能输出位置错误的问题

12.  修复预制件的部分操作撤销后的数据异常

13.  修复点击事件引用了预制件子节点后无法正常保存的问题

14.  修复拖拽预制件节点覆盖原预制件文件时嵌套预制件的修改丢失问题

15.  修复编辑预制件时的其他若干问题

16.  修复编辑器预览无法调试 localStorage 的问题

17.  修复编辑器预览设置 FPS 无效的问题

18.  修复编辑地形时打开预制件再回到场景时地形数据异常问题

19.  修复编辑地形时部分操作撤销重做后表现不符合预期问题

20.  修复预制件实例的 mounted 嵌套预制件上添加节点,没有显示 + 问题

21.  修复 Mac 上通过程序管理器(program配置默认浏览器为 Safari 可能会出错的问题

22.  修复艺术字资源可能因为导入时序缺失数据的问题

23.  修复动画编辑器事件帧、关键帧,曲线编辑等若干问题

24.  修复粒子曲线面板编辑时若干交互问题

25.  修复编辑 FBX 资源时事件帧图标不能拖动和部分情况下位置不正确的问题

26.  修复 Widget 组件 undo 不准确的问题

 

Breaking Changes

1.  将 UIMeshRenderer 组件标记为不推荐使用,用户可使用 RenderTexture 来实现类似功能,详见 Cocos Creator 3.8 手册 - UIMeshRenderer 组件参考

2.  用户自定义的 Effect 可能需要仿照 internal 资源中的 effects/legacy/standard.effect 添加平面阴影相关 pass,否则平面阴影无法动态合批,详见 #14958

 

Known issues

1.  iOS web-mobile EditBox 显示在界面顶部时,第一次获取到焦点时可能会被输入法移出屏幕外,若遇到此问题可参考该 PR 进行修复

收起
3.8.0
01 Aug 2023

Features

 

Custom 管线集成后处理流程

 

Creator 3.x 依赖 3D 游戏呼声最高的需求应该就是后处理了,之前一直都推荐开发者使用 RenderTexture 来制作却没有提供内置能力,主要原因在于支撑后处理的自定义渲染管线一直没有完成。而经过 3.7 赛博朋克 Demo 对自定义渲染管线的验证,在 3.8 中我们终于可以将抗锯齿、超分辨率、环境光遮挡、炫光等后处理特效交付给开发者。这些后处理流程目前都集成在了 CustomPipeline 中,一方面作为 RenderGraph 的示例,另一方面也可以作为我们标准 Forward 管线的试验场。

 

1. 抗锯齿:提供了消耗非常低的 FXAA 和效果较好基于时序的 TAA

 

2. 超分辨率 FSR:有助于用较低的损耗提升渲染分辨率,达到用较低的损耗达到更高的画质,或者减轻项目的性能压力

 

3. Bloom:增强高光位置的泛光表现,提升画面质感

 

4. HBAO:高质量环境光遮蔽,可以大幅度提升场景的立体感和质感
5. 自定义 Color Grading:这是非常简单但立竿见影的一种后期处理方法,可以用来增强对比度、饱和度,调节颜色、白平衡等画面属性。支持任意 Nx1 的长条图 和 8x8 的方块图,系统自动适配

 

从 3.8 开始,我们推荐需要使用后处理的项目切换到 Custom 自定义管线,可以参考文档进行管线的开启。后处理流程的开启方法参考后处理管线文档,目前可以先参考管线测试项目来了解如何使用。

 

2D & UI

  • 高清晰度 Label:此项优化是将默认 Label 组件的实现高清化,所以所有项目升级以后都可以免费获得收益。其原理主要是根据 view 的像素缩放比例重新计算 Label 实际渲染的字体尺寸,获得更高清的文本贴图,尤其是移动平台上效果提升比较明显。除此之外,我们对 2D 渲染器底层也进行了重构,主要目标是让 2D 渲染器在不同操作系统适配以及针对不同组件的实现都能有相对统一的框架,高清 Label 的落地也是受益于此,未来也会更容易扩展 3D UI 和 3D 空间的 2D 渲染能力。
  • 使用 WebAssembly 编译 Spine 原生运行库,统一 Web & Native 的运行时以及 API
  • 降低 WebAssembly 初始内存分配量,并允许内存动态扩容
  • Spine 使用 WebAssembly 运行在微信小游戏,Web 等平台,大幅度优化性能表现

 

渲染算法和材质更新

 

1. 皮肤材质:在内置 effect 中更新简单皮肤材质高级皮肤材质,案例可以参考 Cocos Example Materials 中的 Character 场景

2. 眼球材质:在内置 effect 中更新高级眼球材质,案例可以参考 Cocos Example Materials 中的 Character 场景

 

3. 叶片材质:在内置 effect 中更新高级叶片材质

 

4. 支持 Zeno & Houdini 导出的预烘焙模拟动画:这项功能可以让开发者在游戏或内容中集成离线计算的高质量物理模拟动画,包括刚体、流体、布料等,使得游戏转场或一些固定场景的表现力大幅度提升,尤其是对车机等应用内 3D 模拟非常有帮助。

a. Zeno

b. Houdini

 

5. Reflection Probes 支持 Blend,之前的版本中,动态物体在不同 probe 区域之间的移动会引起跳变,在 3.8 中,不仅支持 Probe 之间的效果混合,也支持 Probe 和天空盒之间的混合,在不同烘焙区域以及室内到室外的场景中,都可以得到很自然的过度效果。

 

Marionette 动画系统升级

 

姿态图和 IK

 

我们为 Marionette 动画系统引入了一个新的特性:姿态图。这个新功能将为程序化动画以及双骨骼 IK 动画提供支持。利用姿态图,开发者可以通过节点系统以便捷的方式定义各种程序化动画和动作姿态,从而构建出更为复杂、细腻的场景交互。这也将大大减少用户在创建角色动画时所需的动画数量。举例来说,你可以定义角色在不同平面的脚部 IK,让角色爬上不同高度的地形,或在走路时注视某一方向。此外,姿态图还可以作为动画状态机的补充,可在状态机中进行嵌套使用。详见:《Cocos Creator 3.8 手册 - 程序式动画

 

允许为骨骼动画添加辅助曲线

在制作复杂的程序化生成动画时,你可能需要为动画添加一些变量曲线,以进行逻辑判断或作为变量使用。为了满足这些需求,我们在动画编辑器中新增了辅助曲线功能。你现在可以为任何一条骨骼动画添加额外的曲线,并且添加后,这些曲线可以在姿态图和状态机中进行读取和混合。这个新功能将提供更大的自由度,帮助你更好地控制和定制动画。

 

此外 Marionette 动画系统还有这些升级:

  • 动画状态机移除实验性质的过渡中断功能,改为支持多条过渡
  • 动画状态机数值条件增加了几种不同类型的条件绑定:权重绑定、动画时间绑定和辅助曲线值绑定
  • 层级面板支持拖动调整排序

物理系统

 

1. 新增角色控制器组件:对于角色扮演和动作类等游戏,可以极大降低角色的开发成本,内置能够和环境自然交互的角色控制能力。

 

2. 约束:新增可配置约束组件,可以用于定制各种复杂的物理部件连接方式,比如汽车的轮轴、各种关节等。
3. 约束:Hinge 约束新增转轴驱动和转动范围限制

 

4. 新增 sweep 碰撞检测 

 

烘焙器更新

  • 光照贴图面板增加过滤选项 Apply Filter,用于设置光照贴图的模糊效果,默认开启。

  • LightFX 支持标准 PBR 材质的 AlphaThreshold
  • 阴影饱和度同样在 LightFX 中生效

 

RenderGraph 自定义管线

 

自定义管线能力在 3.8 正式开放给开发者,它在 3.8 中还支持了 Custom 管线及其后处理能力,具体定制管线的使用方法可以参考自定义管线的详细文档,也可以参考我们的使用范例。RenderGraph 在 3.8 中的能力升级具体如下:

  • 使用 RenderGraph 实现 Custom Forward 管线:Forward + PostProcess,可用于提升现有游戏的画面表现
  • 使用 RenderGraph 实现 Custom Deferred 管线:优化架构、可维护性和扩展性
  • 新增 Compute Shader 能力
  • Pipeline 类型分成了 BasicPipeline 和 Pipeline
  • Pipeline 新增 capabilities 接口,可以获取当前硬件平台下管线的能力。
  • 重构了 MovePass 与 CopyPass 的接口

Asset Bundle 工作流优化

 

支持单独构建指定 Bundle,便于用户单独更新资源,功能入口位于选中的 Bundle 文件夹设置中。

 

支持在 Bundle 文件夹设置中添加过滤选项,让用户可以更灵活地筛选 Bundle 内要参与实际构建的资源。 

 

优化 Bundle 配置的平台设置方式,支持预设配置,便于用户精确管理不同平台的导出选项。

 

注意:项目升级到 3.8 后,Cocos Creator 会自动将 Bundle 配置迁移到项目设置内,请在升级后记得向项目源码库(如 Git)提交项目的 settings 文件夹及 bundle 文件夹对应的 meta 文件改动,以免配置冲突。

 

构建时支持只构建 Bundle。

 

构建时支持筛选参与构建的 Bundle,默认全部导出。 

 

模型 LOD 工作流优化

 

我们在 3.7 支持导入 LOD 模型的基础上,支持了在模型中显示 LOD 信息及新的 LOD 自动生成功能,以便用户更轻松简单地使用 LOD。 


用户可以在 3.8 直接导入任何不包含 LOD 的模型,并模型导入选项中设置不同的 LOD 层级,Cocos Creator 会自动进行减面,并且在场景中创建模型实例时自动添加 LOD Group 组件。

 

WebAssembly 统一化升级和支持

 

3.8.0 开始,引擎部分模块开始使用 wasm 实现,目前包括 spine,渲染 webgpu 后端,物理引擎的 bullet 和 physx 后端。在使用时需要注意以下情况:

 

包体占用情况

 

平台使用情况

 

关于 WebAssembly 未来的规划包括

  • 在小游戏平台支持以子包的形式优化 wasm 包体占用 #15493
  • 在项目侧实验性地支持 wasm 模块的加载,现阶段还是在引擎侧实验性的支持#14980
  • 在原生平台 iOS 端集成第三方 WebAssembly 支持 ,依赖前期调研性能表现#15170

注意

  • 微信平台如果开启 wasm 分包,请同时开启物理 wasm 选项,否则会导致引擎启动失败,我们将在 3.8.1 里做一下容错处理

  • 除了微信平台,其他小游戏平台如果开启了引擎 asm.js 分包,需要勾选 spine 模块,我们将在 3.8.1 里处理这个问题,参见 修复 PR

  • 由于 PhysX 物理后端的体积较大,目前不支持 wasm 分包

平台支持

 

OpenHarmony 支持

 

Cocos 引擎团队和 OpenHarmony 团队紧密合作两年多以来,一起推动了 OpenHarmony 系统在游戏领域的支撑能力不断提升,在社区版本之后,v3.8 我们正式集成了 OpenHarmony 4.0 版本的支持。并且针对引擎 TS 脚本的性能优化,还开放了 AOT 优化选项,优化 OpenHarmony 运行时性能,参考 AOT 编译指导

 

Google Play Games on PC 平台支持

 

在今年 Google IO 大会上 Google Play Games on PC 和大屏体验是受到重点关注的安卓平台更新,Cocos 也被 Google 官方推荐为适配 Google Play Games on PC 平台的引擎大屏体验的推荐游戏引擎

 

Cocos 也已经有很多知名游戏登录了该平台,从 v3.8 开始,你只需要在构建 Android 时勾选 x86 架构,以及 InputSDK 选项,即可满足 Google Play Games on PC 的平台要求。该平台是 Google Play 尝试扩展桌面平台的重要机会,同不断出现的折叠屏、平板一样,标志着大屏幕适配对移动游戏来说越来越关键,也可以帮助开发者获取更多用户。

 

其他

 

其他平台支持方面的更新包括:

  • 增加支付宝小游戏平台支持,详情请参考支付宝小游戏发布指南
  • Android 支持游戏手柄作为输入设备
  • 支持针对单个平台自定义 CLEANUP_IMAGE_CACHE
  • Window/Apple 构建添加 Executable Name 字段

  • Android 构建增加 Input SDK 集成选项
  • Windows 构建新增 CMake Generator / Visual Studio 版本选择项
  • 支持在命令行构建时,通过 stage 参数指定要单独执行 Make,详见命令行发布项目
  • 淘宝小游戏新增对 xhr 的支持

Improvements

  • 我们在模型导入功能中增加了“填充顶点色”选项。这可以防止缺少顶点色属性的模型在导入时变黑。如果你的材质使用了顶点色,但导入模型没有顶点色,或模型导入时出现异常变黑,建议你启用这个选项。
  • 自动图集在属性检查器中无需点击保存即可预览
  • 浏览器预览时将忽略插屏最小显示时间,在加载完成后立即关闭插屏
  • 浏览器预览分辨率支持设为全屏
  • 预览服务器端口由全局配置调整为本地配置
  • 浏览器预览和构建平台预览支持启用 HTTPS 协议,以适配某些特殊环境的安全限制,此功能需在偏好设置的预览选项卡开启
  • 偏好设置、项目设置支持导入导出完整配置
  • 偏好设置的程序管理器支持配置默认图片编辑器

  • 新建项目的设计分辨率从默认 960x640 调整为 1280x720
  • 层级管理器支持使用快捷键 [ 或 ] 上下移动节点,如果同时按下 Ctrl / Command 将置顶 / 置底节点
  • 打开偏好设置、项目设置、动画图等面板时将默认显示在场景编辑器所在位置
  • 组件 @menu 修饰器支持使用菜单路径,示例:

    对应的组件菜单显示如下:

     

  • 新增 `EDITOR_NOT_IN_PREVIEW` 宏,用于简化各类插件和调试代码对编辑器运行环境的判断,为 true 则表示代码在编辑器中执行且场景不在预览状态。示例:

  • 优化渐变色编辑器,支持输入十六进制色值(Hex Color)
  • 默认在多显卡电脑上优先使用独立显卡
  • 优化了各项编辑器使用体验

Fixes

 

Engine

 

详见 引擎完整提交列表

 

Editor

  • 修复撤销重做的部分问题,提高 Undo 系统稳定性
  • 修复微信小游戏和 iOS 平台会同时显示两个插屏的问题
  • 修复资源循环依赖时构建可能卡死的问题
  • 修复 Android 平台游戏名称包含中文时构建会失败的问题
  • 修复原生平台的游戏名称没有校验的问题
  • 修复启动编辑器时脚本可能丢失的问题
  • 修复克隆节点时 layer 会变成父节点的 layer 的问题
  • 修复设置节点 active 状态时切换场景没有提示保存问题
  • 修复嵌套预制体的相关问题
  • 修复预制体重写属性信息失效后数据未清理的问题
  • 修复预制体的对象引用相关问题
  • 修复预制体编辑中粘贴 2D 组件没有正确显示的问题
  • 修复物理包围盒修改时影响了其他包围盒的问题
  • 修复 `resetInEditor` 在编辑器中没有被调用的问题
  • 修复使用反射探针后环境反射偏暗的问题
  • 修复平面反射非水平状态下效果不正确的问题
  • 修复烘培 GI 材质的光能传递错误
  • 修复在使用减面算法对于导入模型进行减面时,模型可能看不到的问题
  • 修复编辑器预览时,键盘鼠标事件支持不完整的问题
  • 修复资源批量删除时可能会报错的问题
  • 对其它编辑器相关问题进行修正

Breaking Changes

  • Gradle  升级 到 8.0.2 , AGP 升级到 8.0.2. JDK 需要升级到 JDK 17. 同时升级 Android Studio 到 2022.2.1
  • 文本底层逻辑调整,深入定制 label 组件能力到 assembler 层的用户需要迁移定制能力到 TextProcessing 中,对上层效果无影响
  • 文本高清化处理由于各个平台文本生成的贴图不完全相同,可能会存在与之前版本 1 - 2 像素的渲染差异

Known Issues

  • Android Instant App 在 Android Studio Flamingo | 2022.2.1 Patch 2 版本上运行可能会出现无响应的问题,建议在升级前谨慎考虑。
  • 长度大于 2048 的 RichText 可能在某些平台上出现换行不整齐的问题,将会在后续版本中进行调整优化。
收起
3.7.4
17 Aug 2023

Fixes

 

Engine

  • 修复 Web 音频 destroy 后重新播放,报错的问题 #15235
  • 修复 Physics2D Contact 无法 disable 的问题 #15224
  • 修复 Spine 组件 UITransform 相关设置,解除对 UITransform 的锁定。新的机制在更改 SkeletonData 时根据资源设置 ContentSize 和 AnchorPoint,用户根据需要自行设置。 #15240
  • 淘宝小游戏:XMLHttpRequest 使用 my.tb.request 重新适配 #15238
  • 修复 Mac 平台的窗口在屏幕间切换点击失效的问题 #15247

Editor

  • 修复编辑器预览启动变慢的问题 #15214
  • 修复预制体节点上添加节点撤销重做后调试工具内报错的问题 #15256
  • 修复构建时若 Bundle 文件夹内的 plist 图集包含大量小图时可能引发的崩溃
  • 修复构建时若资源自身存在循环引用可能引发卡死崩溃
  • 修复淘宝小游戏启用引擎插件后 Windows 和 Mac 生成的引擎 MD5 不一致的问题
  • 修复构建时自动图集的压缩纹理缓存失效的问题
  • 修复动画编辑器循环模式为反向相关模式时,属性检查器上的属性与动画编辑器面板不一致的问题

Scripting

  • 修复编译引擎将导致编辑器无法启动的问题
  • 修复编辑器启动时,可能由于进程冲突导致脚本丢失的问题
  • 修复使用泛型类时,构建可能出现 Unknown node type: "TSInstantiationExpression" 报错的问题
收起
3.7.3
10 May 2023

Features

 

Engine

  • Render Graph 自定义渲染管线支持 GLES 后端
  • Deprecate addRasterView、addComputeView 等接口,新增 addRenderTarget、addDepthStencil 等接口,用于改善 js 内存回收
  • 自定义渲染管线增加 Offscreen Window & RT Raster 的支持
  • Renderer 组件提供更清晰的 Material 获取接口,清晰区分共享材质和实例化材质,废弃 getMaterial
  • 增加角色皮肤、头发、眼球材质,优化内置光照模型对复杂材质的支持

  • 新版 Cocos Effect VSCode 插件,支持内置函数、宏和全局变量的语法着色、自动补全、详细提示、语法检查等功能,可在 VSCode 扩展中搜索 Cocos Effect 进行安装
  • Game 支持固定步长更新
  • 支持淘宝小游戏
  • [XR] XR 构建模版中增加 HEADTRACKING & PASSTHROUGH
  • [XR] 支持 EYE RENDER END 回调

Editor

  • 支持手动填写 iOS 平台开发者账号

 

Fixes

 

Engine

  • 修复高刷设备在 Web 端的帧率设置,并且使用 RAF 优化各种帧率设置下的稳定性
  • 修复 Instancing 材质蒙皮模型动画切换跳变问题
  • 修复部分不支持浮点纹理的平台骨骼动画贴图大小错误问题
  • 修复动画系统保存了错误的材质 uniform 绑定导致的报错
  • 修复 BakedSkinningModel 在原生平台的内存管理问题
  • 修复 spine.SkeletonData 缺失宽高信息造成问题 UITransform size错误
  • 修复内置物理模块的内存泄漏(@May2nd 贡献)
  • 修复 GPU 粒子的采样错误问题
  • 修复粒子 Gradient 数据在 ratio 为 1 时的值采样
  • 修复 SpriteRenderer 在使用 sorting 组件时排序失效的问题
  • 修复 RichText 对于长字符串丢失文本的问题
  • 修复 BMFont 文字在缩放时间距过窄的问题(@May2nd 贡献)
  • 修复 GameView 下运行游戏时加载远程 bundle 失败的问题
  • 修复原生平台 removeSpotLight 的错误
  • 修复 Planar Shadow 在多 Instance 下不显示的问题
  • 修复 Toon shader 在 iOS 微信下的数据错误
  • 修复预烘焙 AO 的计算问题
  • 修复地形的 builtin-terrain 材质中光照计算过暗的问题
  • 修复反射探针的卷积图在 OPPO 小游戏平台较暗的问题
  • 修复 UBOWorldBound 没有被计算到 UBO 数量的问题
  • 对不同 Submodel 材质 pass 不一致时做容错
  • 隐藏不必要的 WebGL 错误信息
  • 修复 GLES2 后端的内部格式
  • 修复微信小游戏平台 WebGL2 不支持 clearBufferfv 的问题
  • 修复 iOS 输入框切换时有可能丢失焦点的问题
  • 修复 iOS 键盘弹出时确认键可能被遮挡的问题
  • 修复安卓平台输入框中无法及时获得键盘输入内容的问题
  • 修复安卓平台设置可写路径后获取路径不匹配的问题
  • 修复 Mac 平台退出时的崩溃
  • 修复 macOS 模拟器同时选择“模拟器开启调试面板”和“模拟器等待调试面板开启”会报错的问题
  • 修复 native.copyTextToClipboard() 在 iOS、Android 的崩溃问题
  • 修复 Window ID 为 0 时在安卓平台的崩溃问题
  • 修复 WebAssembly.instantiate 的 Promise 回调在原生平台不执行的问题
  • 修复自定义引擎缺少 external 目录时的 include 问题
  • 移除 Record 引擎宏定义以避免冲突
  • 修复 AtlasManager 没有被暴露到 API 文档的问题,优化其文档
  • [XR] 修复 RotationOnly 情况下的相机位置跟踪
  • [XR] 修复直接进入 AR 模式时 UI 不显示的问题

Editor

  • 修复 PSD 图片无法导入为 SpriteFrame 类型的问题
  • 修复纹理的自定义压缩方式配置 project 协议程序后压缩失败的问题
  • 修复退出动画编辑模式后属性面板添加组件按钮未显示问题
  • 修复构建脚本时,因为引入 'use strict' 导致一些 npm 库无法使用的问题
  • 修复复制粘贴节点某些情况表现异常的问题
  • 修复场景编辑器节点旋转缩放时吸附行为异常的问题
  • 修复编辑材质缓存数据可能不正确的问题
  • 修复环境贴图替换时编辑器没有刷新的问题
  • 修复地形烘培高精度 Lightmap 时的奔溃问题
  • 修复多选节点编辑时的若干细节问题
  • 修复其它细节体验问题
收起
3.7.2
24 Mar 2023

Features

 

Engine

  • 增加了 Debug View 在运行时的 UI 控制渲染调试功能

    详见 https://docs.cocos.com/creator/manual/zh/shader/surface-shader.html(渲染调试功能 - 运行时使用渲染调试)
  • 添加 tween `destroySelf` 方法用于在节点执行动画时销毁当前节点
  • UI 元素 Opacity 0 时跳过渲染
  • 减少微信小游戏在 iOS 14 高性能模式下的 GFX Buffer 内存消耗

Editor

  • 支持烘培高精度光照图,获得更好的烘焙效果。当用户开启高精度光照图烘焙时,会使用 16 位颜色代替原本的 8 位颜色,并且会单独烘焙 AO 通道。此功能可以用来解决灯光强度过高时,贴图精度不够而产生色斑的问题,但是缺点是会增大光照贴图包体。

    高强度光照时结果对比, 关闭 vs 打开:


  • 添加光照探针烘焙预览功能。当用户选择受光照探针影响的对象时,场景内会显示影响该对象的探针,以及在探针小球上显示用于估算该对象光照信息的探针烘焙结果,以便让用户进行更好的调试。

  • 支持烘培单独的 AO 通道,在开启高精度烘焙时自动开启。
  • 项目设置内新增默认打开场景,避免其他用户第一次打开当前项目时只能看到空场景。
  • 原生平台支持 main.js 构建模板
  • 新增层级管理器显示丢失资源的节点列表的功能

  • 支持拖动 Prefab 到层级面板多选的节点上时,为每个选中的节点批量生成 Prefab 子节点。
  • Editor Improvements
  • 将顶部项目设置菜单中的光照烘焙条目移动到面板菜单
  • 新建的材质以及 standard-material 默认使用 Surface Shader
  • 构建面板不够选 Debug 选项时 Android Studio 将以 Release 配置运行
  • 整理了引擎内置的 effect 文件结构(不影响已有项目)内置着色器 · Cocos Creator
  • 补充了常用材质参数的 Tooltip
  • 优化漫游场景编辑器滚轮 / 触摸板的体验
  • 优化扩展管理器的搜索功能,现在可以同时搜索官方扩展内置扩展已安装扩展
  • 场景编辑器支持在使用矩形变换工具时通过单击选中下一个节点
  • 优化场景 Skybox Envmap 参数的 UI 交互

 

Fixes

 

Engine

  • 规范数学库 normalize & angle实现
  • 修复字节平台 iPad 屏幕显示不全的问题 
  • 修复 facebook instant games 无法启动的问题
  • 修复更新节点 sibilingIndex 触摸排序没有同步更新的问题
  • 修复 Mat4.getRotation 计算结果可能不正确的问题
  • 修复 Label char 模式在原生平台的颜色异常的问题
  • 修复 2D 模块的内存泄漏
  • 修复原生端 LOD 计算屏占比时使用局部坐标导致计算错误
  • 修复通过 MeshUtils.createMesh 创建的 Mesh 对象导致数据异常的问题
  • 修复 sevalue_to_native 转换 std::function<...> 不支持 null/undefined 的问题
  • 修复 Mesh::_hash 属性的 setter 没有绑定的问题
  • Editor
  • 修复 bundle 脚本依赖 import-map 导致不能跨项目复用的问题
  • 修复扩展里的项目脚本无法在模拟器里加载的问题
  • 修复导入插件脚本超过 500KB 的报错
  • 修复自动图集的纹理压缩配置失效的问题
  • 修复自定义纹理压缩工具配置无效的问题
  • 修复项目升级到 3.7 后,引擎模块配置可能被还原的问题
  • 修复微信小游戏平台自定义首屏模板文件无效的问题
  • 修复命令行构建偶现资源丢失问题
  • 修复构建 JSON 分组可能导致构建变慢的问题
  • 修复主光源在烘培后仍然对地形起作用的问题
  • 修复光照和反射探针相关的若干预览及数据更新问题
  • 修复编辑器预览时,鼠标和触摸事件多次触发以及鼠标左右键无法识别的问题
  • 修复编辑器预览时 tween color 会报错的问题
  • 修复退出编辑器预览时可能报错的问题
  • 修复粒子曲线面板部分属性不显示负轴的问题
  • 修复动画编辑器新建或切换动画 clip 后关键帧数据未刷新的问题
  • 修复剔除了 3D 模块后使用动画编辑器报错的问题
  • 修复退出并不保存编辑中的材质时,场景预览状态未回退的问题
  • 修复预制编辑模式下,删除有子节点的节点再撤销后数据出现异常的问题
  • 修复没有调用组件的 resetInEditor 生命周期函数的问题
  • 其它细节问题修复
收起
3.7.1
17 Feb 2023

Features

 

Engine

  • Add more API docs (engine#13937, engine#14079, engine#14088)
  • [Optimize] add image asset’s zh i18n (engine#14108)
  • [Optimize] Add pointerlock function for mac platform (engine#14187)
  • [Pipeline] enable custom pipeline in the editor (engine#14084)
  • [Pipeline] add native pipeline ubo uploading (engine#14061)
  • [Pipeline] Fix web-pipeline ui in post-processing (engine#14145)
  • [Pipeline] Disable over-aligned memory allocation (engine#14164)
  • [Pipeline] Refactored web profiler and native framebuffer (engine#14168)
  • [Pipeline] Refactored custom-pipeline initialization (engine#14176)
  • [Pipeline] Fix memory leak of pipeline JS binding objects (engine#14190)
  • [Pipeline] Resource states & fgd signal split end barrier (engine#14207)
  • [Pipeline] Fixed transparent pass barrier issue (engine#14218)
  • [XR] AR engine module update

Editor

  • 支持 Light Probe 方向光的直接光照
  • 开放更多的 FBX 导入项中的 Mesh 减面参数,以获得更好的减面效果

 

Fixes

 

Engine

  • Fix shadowmap lowp with huawei and reflection probe brightness (engine#14058)
  • Fix shader compilation error with the new version of lightmap (engine#14071)
  • Fix unsynchronized model data issue when adding lod levels dynamically (engine#14054)
  • Fix the issue that lod is not working properly when forced to use certain levels (engine#14055)
  • [Physics-2d] Fix box2d syncRotationToPhysics’s euler angle calculation issue (engine#14048)

Editor

  • 修复模型减面配置里废弃的 gltfpack 减面算法无效
  • 修复动画编辑器事件编辑面板显示异常
  • 修复偏好设置中图片默认导入类型(Preferences - AssetDB - Default import image type)重启后失效的问题 #14176
  • 修复升级 3.7 后,偏好设置程序管理器(Preferences - Program Manager)配置可能无效的问题
  • 修复部分 3D 物理后端配置在编辑器预览中没生效的问题
  • 修复 DPI 超过 2 Windows 设备上场景点击不准确的问题
  • 修复场景编辑器相机 FOV 设置引发的 gizmo 显示异常
  • 修复新建 Canvas 节点时,可能出现 layer 未选中 UI_2D 的问题
  • 修复 Lightmap 聚光灯渲染错误
  • 修复自定义纹理压缩工具不支持项目相对路径的问题
  • 修复构建插件获取 result.settings 无效的问题
  • 修复构建使用 application.ejs 模版时,构建结果多出 application.ejs 文件的问题
收起
3.7.0
17 Jan 2023

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

 

场景渲染

光照探针

GI 全局光照是提升 3D 渲染真实感的关键基础设施。在此之前, Lightmap 可以用来烘焙静态物体的间接光照,但是对场景中的动态物体则无能为力,如角色和场景中移动的物体,这样容易造成视觉效果不统一的问题。光照探针可以提前通过烘焙记录空间中各点的光照信息,然后在物体运动时根据记录在探针中的结果模拟间接光照,对场景中的动态物体也提供高质量的全局光照支持。同时,光照探针还具备良好的运行时的处理性能,预计算也相当快。更多介绍详见《光照探针》

应用光照探针的角色:


使用光照探针实例化绘制的球体:


光照探针编辑:


反射探针

为了进一步提升渲染效果以及提升 3D 项目的沉浸感,我们加入了反射探针支持。它可以在场景中带有反射性质的材质上,渲染出真实的对周边环境的反射,此功能对画面的真实感提升是非常巨大的。它通过空间内某一点对附近区域的环境进行烘焙,在把周围环境信息储存后,应用在范围内有反射材质的物体上以实现真实环境反射的一种手段。在 3.7中,我们加入了具有两种模式的反射探针:Cube 烘焙模式用来烘焙一定空间范围内的立体环境。Planar 平面实时反射模式主要用来模拟平面上的反射,如光滑地面、水面等。更多介绍详见《反射探针》


 


 


 

模型 LOD


LODLevel of Details)是常用的一种大型场景优化手段,核心在于对远处或者不重要的物体,降低其显示细节,以达到提升渲染效率的目的。3.7 加入了模型 LOD 支持,可根据物体显示在屏幕上的尺寸比例,动态切换合适的模型精度,节省渲染资源。更多介绍详见《多层次细节》

 

CSM 阴影层过渡


CSM 层级阴影最明显的一个效果问题就是在不同层级之间的阴影精度不同,导致在接缝处可能产生比较违和的割裂感,尤其是随着相机的移动,不同层级的拼接位置也在不断变化,导致很容易被发现的接缝移动现象。在 3.7 中,我们新增了 CSM 层过渡的支持,混合不同层级的渲染效果,使两个 CSM 阴影层级间过渡更加平滑。

 

后处理流程:Bloom & FXAA


基于 RenderGraph 自定义管线 中新增了 Bloom 后处理特效和 FXAA,将作为后处理定制的标准方案供大家参考。与旧的渲染管线难以扩展与配置不同,新的基于 RenderGraph 的自定义管线的可插拔结构使扩展管线的功能更加容易,同时对于 Forward/Deferred 渲染的输出结果进行后处理特效(如:Bloom 等)的新增也会更加便捷。

 

编辑器

原生场景编辑器(实验性)

3.7 的场景编辑器可以运行在以 C++ 为基础的 Windows/Mac 原生 Cocos 引擎之上,而不是原先以 JS/WebGL 为基础 HTML5 引擎。这意味着编辑器有潜力充分发挥 Cocos 引擎在原生端的性能优势,为各类元宇宙场景、3D 开放世界做好准备。此功能目前处于实验性状态,需在偏好设置 - 实验室开启 Use native engine for scene editor 开启试用。开启后,编辑器支持打开一个与 Scene 并存的独立 Game 面板,用于多窗口项目预览以及调试。

 

全新扩展管理器

3.7 升级了扩展管理器,采用了全新的 UI 并且支持一键安装和更新扩展插件,还支持记录和安装项目所依赖的扩展,让项目的分发更加方便。


为了实现更好的版本管理,提高扩展稳定性,新版扩展管理器也调整了一些管理机制:

  1. 3.7 开始编辑器将不再读取全局目录下的扩展,老项目升级到 3.7 时将会自动复制全局插件到项目中。此功能通过配套的 Dashboard 1.2.4 实现,请先确保本地 Dashboard 已自动更新至 1.2.4 版本。
  2. 从扩展管理器中安装的扩展将记录依赖关系,通过 Dashbord 1.2.4 以上版本打开项目时会自动检查并安装依赖的扩展。此功能目前还不支持 Store 中的插件,我们将在之后的版本中继续完善。
  3. 开发中的插件可以通过点开扩展管理器上方的导入按钮小箭头,选择开发者导入(Developer Import),此功能将为外部插件创建软链接到项目中,避免了插件同步问题。
  4. Store 中的插件如需共用,在 3.7.0 仍与之前一致,需要在各台电脑上分别手动安装,或者将插件内容上传到 Git 版本库。

插屏设置功能更新

插屏设置用于在游戏启动时对 Cocos 或您的品牌进行露出,同时加速首屏启动时间,给用户更好的体验。在 3.7 我们开始着手对此前维护力度不足的插屏设置功能进行翻新,在收集了不少用户反馈,结合 Cocos 自身的业务需要后,插屏设置功能得到了初步重构。目前做出的主要调整如下:

  • 暂时移除问卷调查界面,可以自由开关插屏显示(将来问卷仍会是必要的)
  • 移除背景颜色设置功能,目前仅支持黑色
  • 最小插屏显示时间修改为 500 毫秒

项目设置:


构建面板:


 

资源管理

  • 支持压缩纹理启用 Mipmaps,启用后编辑器会将压缩纹理的 Mipmaps 预先生成并一同导出。
  • 新增 .exr 图片格式支持
  • 支持翻转图片绿色通道

  • 在编辑器的资源管理器移动或者重命名 ts 脚本时将自动更新 ts 中的导入路径,如需开启此功能请在偏好设置中的实验室开启此项开关

  • 新增了 Mesh Optimizer simplify 减面算法,新的算法不再改变 Prefab 结构,并且 fbx 减面效果更稳定,不易丢失材质。
     

网格体 UV 检查

3.7 支持在 Mesh 的属性检查器中显示各个通道的 UV,方便用户快速确认导入模型的 UV 或者 Lightmap UV 是否正确,是否在(01)的区间内,是否有重叠等信息。


 

框架能力

Marionette 动画系统

支持动画图变体。动画图变体是一种新的动画资产类型,允许用户在一个动画图的基础上创建变体,使其有可能在不同的角色上重复使用同一个动画图:

 

动画状态机混合预览面板更新,支持用户更直观方便的在动画图中预览混合的结果

  • 动画图支持节点拷贝粘贴功能
  • Class AnimationController 增加了动态覆盖动画图谱中的动画片段的方法
  • Class AnimationController 增加了查询动画图谱中层数的方法
  • 动画图编辑器:增加了一个右键菜单,可以把运动状态变成 sub-statemachine 状态
  • 优化了状态读取方法

优化粒子系统性能

调整 CurveRange 的构造逻辑,延迟构造底层曲线数据,同时优化了内部装饰器,加快粒子系统初始化速度。在不同复杂度的粒子下均有可观的性能提升。

3.6.2 粒子加载速度对比(加载时间越小,加载速度越快,粒子使用的功能模块越多,提升越明显):


 

其他性能优化

除了粒子加载速度以外,其他不少模块也有了不同程度的性能优化,其中包括以下几个比较显著的方面:

注:图示中每个平台下都会不断增加负载进行性能测试数据采集,不同平台之间负载并不一致,统一在帧率上进行差异展示,所以数值越高越好

  1. Frame Animation 帧动画

  2. 3D 模型渲染

  3. 3D 物理

 

3D 物理系统

  • 在物理系统中添加固定约束 FixedConstraint
  • Point2Point 约束在 PhysX 物理物理后端使用 SphericalJoint 实现
  • 物理系统支持 lineStripCast, 用于近似曲线检测 

  • 默认物理材质支持在项目设置中通过文件配置
  • 修复了 bullet 刚体无法休眠 sleep 的问题
  • Bullet MeshCollider 设置 mesh 的时间提升了大约 100 倍运行速度
  • 修复了 bullet 内存释放的功能
  • 修复 PhysX 后端在刚体生成后动态设置 Mesh Collider convex 属性失效的问题
  • 统一各个物理后端在节点缩放时 cylinder collider cone collider 的表现
  • 修复 PhysX 原生后端(C++)发送大量错误事件的问题

2D 物理系统

  • 修复 box2d shape2dapply() 方法没有对 node 以及碰撞体状态进行判断的问题
  • 修复 box2d syncRotationToPhysics() 没有使用场景节点的世界旋转的问题
  • 修复 box2d aabb 准确度的问题
  • 修复 box2d joint2D anglelimit 中角度转化问题问题
  • 修复 physics2d-builtin shape 编组时的没有检查 Collider 状态的问题
  • 新的 Physics2d Box2d::syncSceneToPhysics() 方法
  • 修复 builtin-2d-physics removeShape() 速度慢的问题
  • 添加了新的多边形切分算法:Hertel Mehlhorn
  • 优化 physics-2d 中没有 connectedBody 时的设置
  • 支持在编辑器中切换 physics-2d 后端

更多

  • 【场景渲染】增加 Sorting 渲染排序组件,并提供排序层顺序编辑接口,用户可以使用此组件控制 MeshRenderer 或者 SpriteRenderer 的渲染顺序
  • 【场景渲染】增加 FXAA HQ 以修正某些场景下物体边缘的虚影
  • 【场景渲染】优化各类与渲染相关的默认值,如默认的 PBR 材质参数、默认天空盒、太阳方向等
  • 【新建项目】添加了一个新的高质量 3D HQ 模板,默认开启阴影与光照等相关设置以达到更高质量的渲染效果,省去了手动开启场景、物体、灯光等多重阴影和光照的设置过程

  • 【构建发布】支持 Facebook Instant Games 发布平台,详见《发布游戏到 Facebook Instant Games
  • 【构建发布】集成微信小游戏高性能模式开关

  • 【构建发布】支持在构建过程中通过点击 “x” 按钮中断构建任务
  • 【构建发布】支持构建任务排队,多平台构建时会更加方便
  • 【场景编辑】为参考图像添加缩放属性
  • 【场景编辑】场景摄像机添加曝光相关属性

  • 【编辑器】对动画编辑器的显示布局以及操作进行了优化,提升易用性以及用户体验

  • 【编辑器】资源管理器支持文件夹多选编辑
  • 【编辑器】将项目设置中的物理配置调整为物理材质,旧项目的配置将自动迁移为物理材质
  • 【编辑器】移动 Joint Texture Layout 到项目设置中
  • 【编辑器】移动创建构建扩展到创建扩展面板。点击创建扩展后会跳转到创建扩展面板,然后在创建面板中选择模板,完成详细设置,创建成功会自动打开插件所在目录。

  • 【框架能力】节点提供了新的 Mobility 属性用于 Lightmap 烘焙设置:

    • Static:视当前节点为不可移动物体或光源,烘培 lightmap 的直接和间接光
    • Stationary:视当前节点为不可移动高光光源,只烘培 lightmap 的间接光照和遮挡,直接光(高光等)仍实时计算
    • Movable:视当前节点为可移动物体或光源,不参与烘培 lightmap
  • 【框架能力】优化了刷新 layout 布局的机制,删除了 layout 布局必须有子节点才会更新的限制
  • 【原生框架】切换到 swig 来生成 JS 绑定代码,旧的 bindings-generator 工具现在已经废弃,生成所有 JS 绑定代码的时间成本减少到 3~5
  • 【原生框架】优化了 se::Object 的构造和销毁,删除了不使用的哈希操作
  • 【原生框架】增加 se::Object:createObjectWithConstructor 方法,在 CPP 代码中通过 JS 构造器创建 JS 对象
  • 【原生框架】支持在本地桌面平台(WindowsLinuxmacOS)上向执行文件传递命令行参数
  • 【原生框架】增加对 se::Object 创建、修改、检查 ES6 Map/Set 的支持
  • 【原生框架】提供 cc::event::EventBus cc::event::EventTarget,以简化引擎内的事件调度
  • 【原生框架】删除 BaseNode 类,使用 Node 类来代替
  • 【原生框架】native.Downloader 支持中止功能
  • 【原生框架】支持 ios websocketServer
  • 【原生框架】在 function-corpping 中添加网络模块
  • 【原生框架】为 setUniform 添加预类型验证器
  • 【原生框架】优化引擎包体
  • 【文档】补全部分缺失的 API 文档,优化 API 文档内容
收起
3.6.3
11 Jan 2023

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

 

Features

Fixes

  • 修复在非 active 状态的 Node 上创建 Spine/DragonBones 组件造成 crash 的问题 #13370
  • 修复 DragonBones 组件在编辑器中的刷新问题 #13371
  • 修复原生平台 Spine/DragonBones 组件材质更新问题 #13416
  • 修复 Spine/DragonBones cached 模式释放问题 #13419
  • 修复自定义 JointTextureLayout 骨骼动画闪烁的问题 #13418
  • 修复了 instancing 相关公开接口的绑定 #13347
  • 修复了 gfx 消息队列引起的死锁问题 #13479
  • 修复了模型开启 instance 模式后,丢失 planar shadow 的问题 #13480
  • 使用 AudioSource 组件播放音乐,退出时,音频未停止 #13528
  • 修复 Web 端滑动操作无法播放音频的问题 #13517
  • 修复小游戏音频销毁前没有停止播放的问题,以及跳过一些无效的 pause 调用 #13162
  • 修复一些 Switch 手柄按键在安卓端无效的问题 #13877
收起
3.6.2
04 Nov 2022

Features

 

优化原生 Spine/DragonBones 性能 #12788。我们在 3.6.2 重点优化了原生上 Spine 的运行性能。在 iOS 较低端设备上最大达到了 40% 以上的性能提升。在 Android 平台也有较为可观的性能提升。


 

[实验性功能] 我们在 Web-Desktop 平台新增了基于 wasm 的面向未来的渲染后端——WebGPUChromium 105)。未来会基于 WebGPU 后端逐步接入如 ComputeShader 等功能特性,对 Web 平台的渲染能力提升具有重要作用。WebGPU 相关介绍可以参考 https://www.w3.org/TR/webgpu/

 

Engine

  • 从材质选项中移除 Batching 合批(不推荐使用此合批模式,请改用 Instancing 合批)#12892
  • 支持 Spine/Dragonbones 组件合批渲染功能 #12847
  • 修复 Spine 二进制格式资源解析错误 #12894
  • 修复 Instancing 合批相关的一些错误 #12786
  • 更新默认天空盒素材 #12917
  • 修复 Android okhttp 没有主动调用 close 的问题 #12783
  • 修复请求下载资源时无法解析 URL 中空格的问题 #12826
  • 添加设置 uniform 时对 FLOAT3 形式 Color 的兼容 #12962
  • 修复原生端设置字体时对特殊名称( OpenSans-BoldItalic)的解析问题 #13048
  • 修复 Graphics 组件内凹形状错误的问题 #13037

Editor

  • 修复 Camera 组件 Visibility 属性在 Inspector 中不加载用户自定义 Layers 的问题
  • Bundle 名称的界面校验规则调整为仅支持数字字母下划线减
  • 修复复制粘贴相机节点报错问题
  • 修复从动画编辑切换到预制体编辑时预制体数据异常问题 #12752
  • 修复场景编辑的正交视角效果错误问题
  • 修复自定义脚本中的属性引用的子类是预制体子节点时不能正常保存的问题
  • 修复编辑器预览暂停时,选中相机时的小窗分辨率不符合设置的问题
  • 修复构建插件 asset-handler 机制失效
  • 修复修改偏好设置->默认图片资源导入类型配置后报错

 

Known Issues

  • 3.6.2 版本中,我们在原生平台上将 Spine 的更新逻辑迁移到了 C++ 环境中以获得更好的性能。因为 C++ 环境中的垃圾回收机制不同,实现了此方案之后,在某些使用情况下,会出现引用悬挂指针的报错。请在开发中尽可能避免以下使用方式:1. 操作未加入到场景中的节点上的数据(包括组件数据),2. 在回调中需要对节点操作时使用 isValid 判断节点是否存在。我们将在 3.6.3 中修复此问题。
  • WebGPU 后端使用带半透明度像素的图片时可能出现预乘透明通道的问题,可以通过调整材质混合模式临时解决
  • WebGPU 后端 CopyTextureToBuffers 接口目前暂不支持
收起
3.6.1
23 Sep 2022

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

 

除此之外,Cocos Creator 的官方 XR 内容开发插件 Cocos CreatorXR 也已适配 3.6.1。它在底层通过支持 OpenXR 标准协议来抹平不同 XR 设备之间的差异,可以一站式对创作内容进行开发并发布到不同的 XR 设备中而无需去适配不同设备的 I/O 项;中层封装了一系列不同功能的 XR 中间件来提供 XR 内容创作支持,并支持用户自定义扩展组件内容;上层基于 Cocos Creator 面板扩展出多种形式的 XR 功能菜单和组件样式,为用户提供更为便利的内容创作界面。开发者可通过 Dashboard 新建 3.6.1 项目,选择对应的模板/案例来自动安装 Cocos CreatorXR 插件,详见 Cocos CreatorXR 介绍

下面是这次更新的主要内容:

 

Engine

  • 增加了原生平台保存图片数据的功能 #12503
  • iOS 文本支持阴影、斜体 #12421  #12382
  • Windows 端现在可以正常播放 wav 音频
  • 优化部分支持 JIT 平台的动画系统性能 #12308
  • 优化了 iOS 平台的部分 UI 性能 #12390
  • 重构 Mask 组件,不再继承而是持有一个渲染组件,避免在 3.6.0 版本对子节点的侵入操作 #12636
  • 优化原生 Websocket onclose API web 标准保持一致 #12370
  • 为原生平台上的数学库添加 approxEquals 方法,用于判断是否近似相等  #12610
  • 优化原生平台上 JSBClassType::findClass 的效率 #12548
  • Android 减少非必要的第三方库连接, 包体最多减少1.4M #12537
  • 修复 iOS 多任务下载时造成的中断#12743
  • 修复解析 HttpRequestHeader 时可能出现的空格未修剪问题#12757
  • 修复裁剪依赖模块时可能造成的资源丢失问题(如裁剪2d模块造成的particle-2d模块资源丢失)#12602
  • 修复 tiledtile 移动无效的问题 #12377
  • 修复 3.6.0 版本 spine/dragonbones 功能裁切问题 #12605
  • 优化 spine 内存使用 RGBA8 颜色格式#12619
  • 各向异性材质参数可以对接 Substaince 等材质库#12371#12376
  • 修复 Android 平台上 Downloader 连接超时设置错误的问题 #12642
  • 修复原生平台上 jointTexture 配置无效的问题 #12639
  • 修复原生平台上 mesh.minPosition/maxPosition 返回的不是 Vec3 类型的问题 #12628
  • 修复原生平台上 Node::isChildOf 触发崩溃的问题 #12493
  • 修复原生平台上 DEBUG 模式下 ValueArrayPool::get 函数可能触发断言的问题 #12499
  • 修复 Windows 平台工程路径包含空格导致 Android 构建报错的问题 #12754
  • 修复 Fog  Debug View 的一些显示问题 #12571#12343
  • 修复安卓平台遇到的音频卡顿问题 #12589
  • 修复 AudioSource 切换 clip 时的内存泄漏 #12592

 

Editor

  • 支持 tif tiff 格式图片
  • 支持 Windows 构建进度同步显示在任务栏
  • 允许脚本内数组属性的修饰器影响子元素
  • 支持 Marionette 拖动 transition priority 进行排序
  • 优化动画编辑器事件处理,函数名不能为空
  • 支持命令行构建使用界面预先配好的配置
  • 支持偏好设置 - 自定义引擎设置项目中的相对路径
  • 优化场景编辑器启动流程,加快启动速度
  • png/jpg/webp 图片压缩质量设为 100 或者压缩后大小超过原图时将会直接使用原图
  • 修复编辑 SpriteFrame 后,场景内的 Sprite 可能不渲染的问题
  • 修复 Prefab 内修改 scale 无法在场景内实时生效的问题
  • 修复构建 onBeforeMake onAfterMake 回调不触发的问题
  • 修复动画编辑器,使用节点过滤功能后节点显示异常的问题
  • 修复将子节点挂载到其他节点后,删除父节点的时候场景数据会有残留的问题
  • 修复脚本内使用 SpriteFrame 资源的时候 name 可能丢失的问题
  • 修复 webp 格式导入成 cube 后,生成的文件扩展名错误的问题
  • 修复场景 "create-component" 消息接口无法接收组件名字的问题
  • 修复 ui-asset / ui-component / ui-node missing 状态显示不正确的问题
  • 其他编辑器细节体验完善

 

Known Issue

  • 升级到 3.6.1 后,L10n 做为实验性功能还需启用一个外部插件才能正常使用,如有需要请移步论坛帖 3.6.1 L10n 安装补丁 下载插件。
收起
3.6.0
17 Aug 2022

Cocos 团队内部,我们一直将 3.6 作为 3.0 的合并版本之后最重要的里程碑版本来看待,一方面这个版本的迭代周期是迄今为止最长的一个版本,另一方面是因为这个版本在多个方面的大幅进化。下面就是 3.6 版本的更新说明,由于更新数量过多(engine1110 PRseditor678 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 EditorL10n),目前支持文本翻译和资源替换。其定位是与 Creator 深度集成,通过高自动化提高翻译的效率,并且以无代码的方式降低使用门槛,达到任何人都可以开箱即用的目的。

 

包含的核心功能为:

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

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

 

场景编辑器

  • 支持表面吸附和顶点吸附

表面吸附 Surface Snapping(按住 ctrl/cmd + shift

 

顶点吸附 Vertex Snapping(按住 v

 支持框选功能,可以批量选中多个物体


构建能力

  1. 可以在构建任务中自由选取和组合 BuildMakeRun 等子任务执行
  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.getMaterial.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 导致读取失败的问题

引擎更新

  • 修复编辑器下重复切换场景导致的内存泄露(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 用户升级。

 

Features

 

实验性:FBX 智能材质导入

 

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

Maya 工具内效果

 

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

 

此功能已支持主流 DCC 工具:3ds MaxBlenderMayaC4D 中的部分标准材质。

 

具体使用可以参考使用文档。同时我们也将在 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

Features

 

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 平台时资源拷贝的卡顿问题。需要再次感谢社区开发者们。

请所有使用 v3.4 的用户升级到 v3.4.2,将得到更优秀的稳定性和开发体验。

重要更新

  1. 修复脚本重新加载导致的内存泄漏问题,在脚本更新过程中编辑器不再有持续性的内存增长
  2. 修复一些编辑器构建相关问题
    • 修复勾选首包为远程包后取消,可能导致原生平台构建失败的问题
    • 项目配置更改,可能导致构建后 md5 变化的问题
    • 修复勾选 MD5 后重复构建两次 hash 值发生变化的问题
  3. iOS 平台选择 “跳过 XCode 工程更新” 时避免拷贝资源文件夹,修复打包时无资源的问题
  4. 提升原生平台稳定性
    • 修复 Vulkan 后端在 Android 12 上的崩溃问题
    • 避免游戏在 Android Surface 销毁时(进入后台等情况)引发的崩溃和黑屏问题
    • 修复游戏从 Camera 返回时可能出现的崩溃问题
  5. 在 Spine 和 DragonBones 中使用共享的 VertexBufferAccessor,提升 GPU 提交 buffer 的性能
  6. 修复一些 v3.4.1 重构引入的问题。
    • 修复 SkeletalAnimation 在不调用 play 的情况下直接 setTime 无效的问题
    • 修复 2D 粒子在部分情况下会产生闪烁的渲染表现问题
    • 修复 Tiledmap 的渲染问题
    • 修复 Dragonbones 在设置位置后需要调用 `ArmatureDisplay.markForUpdateRenderData` 才可以正确更新的问题
    • 修复 Mask 对 Spine 和 Dragonbones 无效的问题
  7. 给引擎创建的默认场景添加天空盒(如果不需要天空盒的项目,请记得删除场景中 LDR 和 HDR 的两套天空盒资源)

详细更新说明

Editor

  • 修复动画时间轴右键事件帧后,查看红线随鼠标滑动而移动的问题
  • 修复编辑器重启后,需要点击运行才能预览 web 项目的问题
  • 修复编译原生模拟器 UI_GPU_DRIVEN 的报错
  • 修复勾选 MD5 后重复构建两次 hash 值发生变化的问题
  • 修复 prefab 数据里根节点 root 为 null 会导致报错的问题
  • 优化属性检查器上部分属性的顺序
  • 修复 Canvas Camera 在编辑器中 resize 的问题
  • 修复选中节点后层级管理器不会自动展开的问题
  • 修复 Mac 上 num-input shift + wheel 功能失效的问题
  • 修复动画编辑切换属性轨道后偶现未及时更新数据的问题
  • 修复动画编辑部分特殊分量轨道无法粘贴的问题
  • 修复脚本重新加载导致的内存泄漏问题
  • 修复项目配置更改,可能导致构建后 md5 变化的问题
  • 修复属性检查器上 resetComponent 后无法删除的问题
  • 修复构建插件机制 BuildResult 查询图集资源路径时的返回值错误问题
  • 修复勾选首包为远程包后取消,可能导致原生平台构建失败的问题

Engine

  • Shared vertex buffer accessor for Spine and DragonBones [10077]
  • Fix skeletal animation sample( ) does not work as intended [10006]
  • Fix DragonBones node can’t be moved in editor [10031]
  • Fix 2d particle rendering issue [10038]
  • Fix Tiled map rendering issue [10059]
  • Fix TiledLayer culling row and col [10035]
  • Fix MotionStreak updateColor bug [10055]
  • Add default skybox [10021]
  • Fix planar shadow z-fighting [10026]
  • Add OHOS platform detection [10028]
  • Fix skybox stretch in ortho projection [10045]
  • Fix releaseMapInfo error. [10062]
  • Add protection for invalid node.uiProps [10060]
  • Fix native platform mesh-render-data index error. [10071]
  • Optimize multi-touch on ByteDance platform [10086]
  • Fix canvas widget bug in editor [10052]
  • Fix renderData update bug when renderable2d is not rendering [10101]
  • Fix interface checking [10109]
  • Fix pointer event list manager [10084]
  • Fix custom class missing when the instantiate error [10128]
  • Fix bug for compress texture usage under Sprite grayscale mode [10129]
  • Fix getTiledTileAt cause layer show wrong. [10137]
  • Fix Node rotate API doc [10140]
  • Ensure RenderData.clear won’t break usability [10177]
  • Update editBox size when node resize [10188]
  • Fix iOS version detection on Wechat platform [10159]
  • Fix mask is not working for spine/db [10201]
  • Improve touch event performance by caching system info on ByteDance platform [10218]
  • Fix merge batches issue with multi canvas [10232]
  • Add JsbBridgeWrapper for OHOS [4204]
  • VK: fix android 12 crash [4217]
  • Supply a default context when surface destroyed [4222]
  • Use same mtx for write [4220]
  • iOS/mac skip POST_BUILD copy Resources folder procedure [4216]
  • Fix spine binary data read issue. [4229]
  • Fix loop audio would stop for ios system [4254]
  • Fix restart view size [4256]
  • Fix spirv incorrect name on binding [4259]
  • Fix app crash after switch back from Camera [4268]
  • Fix incorrect resize behavior on iOS [4265]
收起
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 逼近或持平,小部分超过。

图例讲解:所有测试都是在中低端机完成,每张图标的四个区间依次为 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 中不仅增加了像 Marionette 动画系统这样的重要功能,而且在产品体验、稳定性、性能优化、基础架构层面都做了大量的工作。除此之外,我们还集中修复了一批社区反馈比较多的问题,解决了一些以前遗留的疑难杂症。相信引擎团队倾注心血奉献给大家的 v3.4 版本会成为一个里程碑版本,更好得帮助开发者开发出优秀的游戏作品!

 

Features

 

动画系统 Marionette

动画系统是 3.4 中最重要的新功能,我们取名为 Marionette,意思是提线木偶,不仅形象得描述了它的作用,而且使用提线木偶的木偶剧还是源自于中国的传统艺术形式,从唐代就出现,千年来流传至今仍然是闽南地区重要的戏曲形式。借助 Marionette,我们也希望开发者能够完美控制游戏角色,增强游戏通过角色叙事的能力。

 

3.4 版本中,Marionette 已经支持动画系统的基础功能,包含状态机、子状态机、状态机组件、触发器变量、Blend Tree 等。当然,更完善的动画系统能力还在迭代中,比如动画层级和遮罩、人形骨骼和 IK 等能力已经在继续开发之中。为了帮助大家学习 Marionette 动画系统,我们也准备了详细的文档、[Demo]和视频教程。

 

编辑器体验优化

在编辑器体验方面,我们做了大量的体验细节优化和疑难杂症的处理。功能和体验优化包括:

  • 动画编辑器支持标准贝塞尔曲线缓动预设,点击选中曲线片段后点击曲线预设即可应用


  • 新增矩形工具(Rect Gizmo)的智能对齐功能

  • 支持开发者自定义宏配置

 

  • 支持 RenderTexture wrap modefilter 等参数

  • 新增 Octree 空间管理加速结构,优化了视锥剔除性能,可在场景 inspector 中开启

 

 

光照模型和渲染优化

v3.0 以来,Creator 一直在不断积累和打磨渲染能力,v3.4 中为了增强引擎的氛围感和画面效果,也带来了一系列重要的升级。尤其是光照模型的改进将使得引擎在光照表现层面更加精细。

  • 支持自动生成环境贴图卷积图用于漫反射计算

手动设置环境光 vs 自动生成漫反射卷积图

  • 支持 HDR LDR 渲染切换(在场景节点 Skybox 配置中)

关闭 HDR vs 开启 HDR

  • 支持 IBL 采样降噪(standard 材质中勾选 USE REFLECTION DENOISE

开启 Denoise vs 关闭 Denoise

 

渲染管线强化

在渲染管线方面,FrameGraph 是从 v3.1 开始引入的基础设施,经过几个版本的迭代,在 v3.4 我们正式将 Forward Deferred 管线都对接了 FrameGraph,下面是一个简化的延迟管线 FrameGraph

 

目前引擎的延迟管线总共包含 2 个计算 pass7 个渲染 pass,虽然不算复杂,但已经能凸显 FrameGraph 的作用了。一方面简化了管线层的代码组织,降低了维护成本;另一方面也降低了开发者定制管线时的心智成本。基于 FrameGraph,华为 HMS CG Kit 团队在 v3.4 中继续在延迟管线中贡献了 Clustered Light Culling 用于优化动态光源计算性能,可在移动端支持同屏数百个动态光源(麒麟 990 芯片在 Sponza 场景运行 1000 盏动态光源可达到 40 fps

 

另外,渲染管线中的 Subpass 也是基于 FrameGraph 来实现的,FrameGraph 的第二大优势就是延迟模式渲染(不同于延迟渲染管线),引擎可以先分析渲染流程,进行优化之后再执行完整渲染流程。目前移动端的 GPU 都是和 CPU 共享系统内存的,功耗的一大热点就是对于显存的读写。而 Subpass 优化就是充分利用 GPU Tiled 缓存来降低显存读写功耗,当两个相邻渲染 Subpass 的写入资源和读取资源是同一份帧内资源,且不会被其他 pass 引用时,这个资源就只会通过 Tiled 缓存来读写,不会读写内存,可以明显降低功耗。这种对资源和渲染流程的自动推导正是 FrameGraph 带来的优势。


 

重要 Fix 和性能优化

 

正如前文介绍,稳定性是 v3.4 版本的首要目标,所以我们也修复了一些困扰多时疑难杂症,将引擎的稳定性推上了一个新的高度。下面列举一些比较重要的修复

  • 修复了动画编辑过程中使用 Active 可能会导致数据丢失的严重问题
  • 修复场景在部分异常报错的情况下,会出现 MissingScript 组件,导致场景启动失败的问题
  • 修复 iOS 重复退出进入造成的崩溃
  • 修复 GLES3 后端在部分芯片上材质编译导致的崩溃问题
  • 修复 Vulkan 后端在一些低端机上的黑屏问题(通过更准确地下发 barrier image layout 转换)
  • 修复 Vulkan 后端在一些低端机上的崩溃问题(通过修改 shader 绕开一些驱动支持不完善的语法)
  • 修复 Vulkan 后端在转屏或分屏时崩溃或分辨率不对问题
  • 修复 Vulkan 后端在使用大量高分辨率贴图时的崩溃问题
  • 修复少数设备 Chrome 上的黑屏问题
  • 修复 mountedChlidren 里有 PrefabInstance 可能会导致数据错误的问题
  • 修复复制 Prefab 时可能出现的 fileId 冲突,会进而导致数据丢失和报错
  • 修复 Prefab 中引用了被删除的元素数据,导致序列化了很多冗余数据的问题
  • 修复 Undo 可能导致 prefab 内的部分 override 数据丢失的问题
  • 修复地形还原的时候,可能出现数据错误的问题
  • 修复运行时切换场景后 Label 引用的 GPU 内存没有释放的问题
  • 修复 InstanceBuffer BatchedBuffer 由于持有全局 Map 导致的内存泄露问题
  • 修复部分小游戏平台全局 precision 指定失败导致的大量问题,比如阴影采样问题
  • 修复场景烘焙的情况下原生平台没有传递正确的 baked 参数
  • 修复 GLES 下有概率会出现的模型闪烁问题(通过优先使用 glMapBufferRange 而非 glBufferSubData
  • 修复当模型骨骼权重中有 NaN 时在不支持浮点贴图的设备上花屏的问题(通过在导入期均分所有 NaN 权重)
  • 修复原生端预烘焙动画 Instancing 处理后大批量数据同步崩溃
  • 修复多个同名插件且注册了资源,会导致脚本编译失败的问题
  • 修复原生平台重新构建后无法更新远程资源包内容的问题(来自论坛反馈
  • 修复原生选择加密构建后,原始代码仍然被打进 apk 的问题 (来自论坛反馈
  • 修复自动图集使用压缩纹理后,修改图集配置重新构建仍使用缓存;

除了重要问题的修复以外,引擎的整体性能也得到了一定的提升,比如 2D 渲染和合批效率、物理性能、iOS Web 3D 场景性能、Android 部分场景。下面是 2D 渲染的部分测试结果:

 

已知缺陷和潜在兼容问题

 

构建模板升级

由于调整了 web 平台屏幕适配的相关逻辑,我们改动了 Web 相关的 index.html 模板,这里包括预览模板、构建 web 平台模板。

 

我们已经在引擎内部做了相关的兼容处理 

 

这个处理会确保 index.html 内部有一个固定的 div 结构

 

<div id="GameDiv">

  <div id="Cocos3dGameContainer">

    <canvas id="GameCanvas"></canvas>

  </div>

</div>

 

如果缺失了 GameDiv / Cocos3dGameContainer,运行时会自动补齐

 

注意:这个 div 结构是引擎内部管理的私有结构,我们希望保持这个结构完整且不被定制。如果在这个结构内加入了其他 web 标签,可能会导致一些不确定的兼容问题。

 

IBL 采样降噪

新增的 IBL 采样降噪算法目前对 iOS Web 环境兼容有一些问题,由于发现较晚就没有在版本中合并了,会在后续的 3.4.1 中完成对 iOS Web 的支持

 

延迟管线缺陷

目前延迟管线仍然在高速迭代过程中,功能和平台兼容性还存在一些问题,暂不建议在项目中实战使用。目前已知的一些问题包括部分粒子混合模式无法渲染,暂不支持 builtin-toon 材质,部分低端平台和设备有兼容性问题,不支持聚光灯阴影,2D & 3D 相机混排问题等。

 

更新列表

 

Feature

  • Animation】新增 Marionette 动画系统,支持状态切换、子状态机、Blend Tree 等角色动画必要功能
  • Animation】动画编辑器支持标准贝塞尔曲线缓动预设
  • Animation】曲线关键帧支持 Broken 断开关联分开控制左右控制杆
  • Scene】支持自动生成环境贴图卷积图用于漫反射计算
  • Scene】新增矩形工具(Rect Gizmo)的智能对齐功能
  • Scene】新增 Octree 空间管理加速结构,优化了视锥剔除性能[文档]
  • Scene】新增 GPU Occlusion Query 剔除(默认关闭),可以通过`root.pipeline.setOcclusionQueryEnabled(true);` 开启【Project】支持开发者自定义宏配置[文档]
  • Scene】新增原生平台内存泄漏检测系统(默认关闭),可以通过` #define USE_MEMORY_LEAK_DETECTOR 1`开启[文档]
  •  
  • Builder】构建支持外部开发者注册自定义纹理压缩处理工具
  • BuilderMac / iOS 平台构建添加 "跳过 Xcode 工程更新" 选项, 避免覆盖对工程文件的修改
  • Builder】合并安卓、Windows GLES 选项,不允许单独选择 GLES2
  • Particle】支持粒子发射器剔除,支持离线自动计算,也支持手动调整(RenderCulling 模块)
  • Particle】支持粒子朝向和节点朝向统一
  • Asset】支持 RenderTexture wrap modefilter 等参数
  • AssetRenderTexture 添加 readPixels 接口
  • prefab 支持批量取消关联
  • AssetFBX 导入器的动画烘焙速率新增自动选项
  • AssetFBX 导入器新增选项:优先使用文件时间范围
  • AssetSpriteFrame 资源面板上的 packable 属性除了影响自动合图以外将会影响自动图集的构建处理,关闭后不参与构建合图
  • Asset】地形模块支持自动 LOD
  • Graphics】支持 IBL 采样降噪(standard 材质中勾选 USE REFLECTION DENOISE
  • Graphics】更准确的 Gamma Correction
  • Renderer】支持 HDR LDR 渲染切换(在场景节点 Skybox 配置中)
  • Renderer】前向和延迟渲染管线均基于 FrameGraph subpass 重构
  • Renderergfx 封装 swapchain 公开接口,支持多窗口应用
  • Renderer】延迟管线使用 Clustered Light Culling 优化动态光源计算性能,[参考 Demo]
  • Renderer】延迟管线支持设置离屏 FBO 分辨率缩放
  • Renderer】延迟管线支持 FXAA 抗锯齿
  • Renderer】延迟管线支持简易 Bloom 后处理特效
  • Scripting】支持 @requireComponent 传入数组
  • Scripting】新增接口 JsbBridge 简化调用 Java 代码和 ObjC 代码的使用,参考[展示用例](https://github.com/cocos-creator/example-3d/blob/v3.4/native-script-bridge/README.md)
  • PAL】新增 input 模块,未来将替代 `systemEvent`,具体参考 [Event Input 文档] [Event Node 文档]
  • PAL】在 `EventMouse` `EventTouch` 上支持 `preventSwallow` 属性,支持事件穿透派发:`event.preventSwallow = true`
  • PAL】支持 sys.hasFeature() 接口查询平台特性是否支持

Improvement

  • Scripting】升级原生所依赖的 v8 引擎到 v9.1.269
  • Renderer】多光源收集的性能优化
  • Renderer】优化 GLES/WebGL RT 性能
  • Renderer】优化原生内存/显存使用(通过周期性调用 framegraph gc
  • Graphics】修复半透明物体的光照和阴影计算
  • Graphics】优化雾效,将计算迁移到 Fragment Shader 中,保障正确的雾效过渡
  • Graphics】禁用半透明物体的多光源照明
  • Scene】为世界坐标轴加上坐标轴文字
  • Scene】地形编辑器增加选择模式
  • Physics】优化了 PhysX 在原生平台的包体
  • PhysicsPhysX 现已支持 M1 设备
  • PAL】优化 Web 端方向适配,以构建面板选择的方向为主,无视浏览器方向
  • PAL】在 Web 和 小游戏端,立即派发输入事件,解决一些用户交互权限的问题
  • PAL】为所有平台和模拟器更换了全新的 App 默认图标
  • PAL】现在 iOS 平台构建会根据横屏或竖屏选项引入相应的默认Launchscreen 图片(若更改后未及时生效需要重启设备清理缓存)
  • Asset】修复 FBX 动画导入尾帧丢失的问题
  • Asset】修复扩展名为大写的时候,资源 change 通知可能丢失的问题
  • Asset】解决新增资源可能没有发送 add 事件,导致 assets 面板可能一直等待的问题
  • Builder】构建配置服务器地址改为记录在 settings.json 内,方便动态更新
  • Builder】新建自动图集,将会默认开启在 Bundle 内的剔除选项(优化需求
  • Extension】插件管理器的开发者面板允许导入除了当前项目或者全局目录以外的插件
收起
3.3.2
11 Oct 2021

Features

 

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

 

引擎的有些功能依赖 C++17,有些功能对 Android API 有要求。为了方便开发者使用,编辑器的功能配置界面对于这些依赖进行了提示。比如,Android 使用延迟管线时,要求 Android API 21+,如果配置选择使用延迟管线,编辑器会提示需要的 Android API 版本:

 

当然了,我们还提供了完整的文档说明各个功能模块对于 Android API C++ 版本的要求。详细信息可以参考该文档说明

 

重点更新列表

  • Store 下载增加了进度

 

问题修复

  • 原生端 GPU Instancing 材质切换导致无法渲染
  • 修复 curve 组件 Two Curve 模式时 muti 无法修改的问题
  • 修复 prefab 修改模式下,undo 后立即保存可能丢失 override 的问题
  • 修复编辑 prefab 资源时添加 UI 节点出现的 UITransform 组件或 Canvas 节点问题

 

已知问题

  • Topon Tradplus 这两个 Service 在构建 iOS 时会出现异常,我们将在近期通过热更新修复

 

升级说明

< 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 的开发体验和运行效率,支撑好 2D3D 等不同品类的重度游戏顺利上线。

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

收起
3.3.1
17 Sep 2021

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

编辑器

  • 优化微信字节面板上物理实验室选项的显示,新建微信构建任务时,将会默认开启 Wasm 物理系统。开启后,将会覆盖项目设置的物理后端选择
  • 修复若干动画编辑器操作问题,包含:
    • 部分类型的动画没有正确插值的问题
    • 复制轨道时曲线数据没有复制的问题
    • 无法连续操作选中关键帧属性轨道
    • 存在滚动条时添加关键帧位置错误
    • 多选关键帧后点击在关键帧位置移动异常
    • 修复跨节点跨属性粘贴关键帧数据失败
  • 修复完善粒子曲线相关控件:包含 Bursts 属性无法正常添加、包含 Constant 模式的曲线显示异常、优化 Two Curve 的显示、移除关键帧后曲线显示不正确
  • 修复 joint-texture-layout 在命令行构建时无效的问题(会导致运行时加载失败)
  • 修复创建的物体中 Component 的 FileId 相同的问题
  • 修复自动图集与 renderTexture 资源在同一文件夹时,无法正常预览和构建
  • 自定义引擎设置按编辑器版本区分存储
  • 修复 Prefab 中的脚本修改后没有及时更新的问题
  • 修复 Prefab 编辑模式下创建 ui 节点存在的问题
  • 修复编辑 Prefab 资源时资源被删除,此时保存不会自动转另存的问题
  • 修复 Hierarchy 上根节点相关的全选和复制的功能问题
  • 修复场景切换时 Hierarchy 调用了 db 接口报错的问题
  • 修复自定义脚本模板文件名称不能是纯数字的问题
  • 修复 assets 面板批量删除资源时 db 报错的问题
  • 支持 assets 面板新建资源时对输入的名称能过滤其后缀的机制
  • 修复导入失败的资源,每次焦点重新回到编辑器都会报一次错误的问题
  • 修复场景中旧的 private node 会造成警告的问题
  • 修复 scene 资源升级会在末尾增加一个空行的问题

引擎

  • 修复粒子系统实例化性能下降的问题
  • 修复 iOS 14 Web 平台的运行性能问题
  • 优化 Shadow Culling 算法,升级后需要使用 resolution 和 distance 来调节阴影质量
  • 修复聚光灯阴影上的计算错误
  • Shadow bias 改为使用世界空间单位,调节起来会更直观
  • 修复 Android 11 API Level 30 环境下的崩溃问题
  • 修复了 AnimationClip.createWithSpriteFrames 动态创建动画失败的问题
  • 修复 inverseTransformPoint 函数错误
  • 修复 widget 对 target anchor 变化的监听
  • 修复 Editbox backgroundImage 属性在 SpriteFrame 的修改时没有被同步的问题
  • 回滚对  EventKeyboard.isPressed 属性的弃用
  • 修复 button 的 scale 模式下无法设置节点 scale 的问题和无限放大的问题
收起
3.3.0
24 Aug 2021

Features

 

性能优化

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

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

 

 

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

 

优化场景编辑体验

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

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

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

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

 

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

 

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

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

 

 

同时,在 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 通道
  • 软阴影选项从之前的 X9X25 等改为 Soft Soft2X
  • 简化阴影贴图的尺寸设置为 HighMediumLow
  • 去除 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 通道
  • 软阴影选项从之前的 X9X25 等改为 Soft Soft2X
  • 简化阴影贴图的尺寸设置为 HighMediumLow
  • 去除 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 的开发体验和运行效率,支撑好 2D3D 等不同品类的重度游戏顺利上线。

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

收起
3.2.1
10 Aug 2021

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

 

Features

  • Web & 小游戏 2D 渲染性能优化
  • 优化小游戏启动性能
  • 优化动画组件运行时性能
  • 优化 PCF 阴影虚化效果,对低精度 ShadowMap 更加友好
  • 优化 bullet 物理引擎性能
  • 增加自动资源扫描开关,大型项目可以手动刷新资源管理器,提升编辑器体验
  • 创建项目时默认不开启 TS 严格模式(建议手动开启)
  • 解决 Mask 带来的内存泄露
  • 解决 MeshRenderer 设置材质导致的内存泄露
  • 强化 FBX 模型导入的容错
  • 兼容废弃的 AudioClip 播放接口

 

Bug Fixes

  • 修复部分 iPhone 设备的字节平台上,Shadow map 阴影渲染不出来的问题
  • 修复 Empty 模板创建项目的问题
  • 修复材质编辑器中多 PASS 切换问题和部分属性显示丢失
  • 修复 JointTextureLayout 面板无法滚动
  • 修复 SplashScreen 设置窗口无法关闭问题
  • 修复预制体根节点上的脚本在原生环境中丢失的问题
  • 修复重复加载 Morph 模型导致的渲染错误
  • 修复 TTF 字体丢失时的崩溃
  • 动画编辑器修复
  • 修复动画编辑器节点关键帧无法直接删除
  • 修复动画编辑器框选后,按下 Ctrl 添加关键帧后复制粘贴、缩放、排列关键帧功能异常
  • 修复动画编辑器属性列表超出不出现滚动条、sample 修改后,当前时间显示未实时更新
  • 环境与光影
  • 修复开启 IBL 之后的材质报错
  • 修复天空盒第一次设置无法显示
  • 修复开启 ShadowMap 阴影后 GPU 预烘焙骨骼动画失效
  • 粒子模块修复
  • 修复粒子材质在节点未启用的情况下无法显示的问题
  • 修复粒子 start speed 效果问题和旋转时的重力效果问题
  • 构建模块修复
  • 修复构建插件重启后报错 (来自论坛反馈:构建扩展包刷新报错 )
  • 修复自动图集配置修改后构建仍使用缓存 (来自论坛反馈:CC3.1.1自动图集,打包后会保留原图)
  • 修复安卓 abi 无默认值与原生 native 文件夹的 git ignore 配置问题 (来自论坛反馈:原生native目录需要进行git版本控制吗 )
  • Tiledmap 修复
  • 修复使用多图集下的 Tilesets 显示错误
  • 修复 TiledLayer getTiledTileAt 函数报错问题
  • 2D 骨骼动画
  • 修复编辑器更新 colorSpine DB 透明度不生效问题
  • 修复 web native Spine 使用 blend mode 显示效果不正确的问题
  • 修复 Spine 挂点节点在编辑器设置 scale 后不生效的问题
收起
3.2.0
18 Jun 2021

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

 

Features

 

支持构建 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 的开发体验和运行效率,支撑好 2D3D 等不同品类的重度游戏顺利上线。

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 的问题反馈,为了更切实解决开发者遇到的痛点问题,并且降低开发者的升级门槛,我们决定继续在 v3.1.2 上优化体验和性能,交付给开发者。目前 Cocos Creator v3.x 作为一个新生的 3D 引擎,距离开发者的期待还有不小的距离,我们希望通过这种持续交付的实际行动来给开发者更强的信心。同时感谢所有 v3.x 先行者的支持,是你们的反馈让引擎日趋完善!

 

Improvement

  • Web & 小游戏 2D 渲染性能优化
  • 优化小游戏启动性能
  • 优化动画组件运行时性能
  • 优化 PCF 阴影虚化效果,对低精度 ShadowMap 更加友好
  • 优化 bullet 物理引擎性能
  • 增加自动资源扫描开关,大型项目可以手动刷新资源管理器,提升编辑器体验
  • 创建项目时默认不开启 TS 严格模式(建议手动开启)
  • 解决 Mask 带来的内存泄露
  • 解决 MeshRenderer 设置材质导致的内存泄露
  • 强化 FBX 模型导入的容错
  • 兼容废弃的 AudioClip 播放接口

 

Bug Fixes

  • 修复 Empty 模板创建项目的问题
  • 修复材质编辑器中多 PASS 切换问题和部分属性显示丢失
  • 修复 JointTextureLayout 面板无法滚动
  • 修复 SplashScreen 设置窗口无法关闭问题
  • 修复预制体根节点上的脚本在原生环境中丢失的问题
  • 修复重复加载 Morph 模型导致的渲染错误
  • 修复 TTF 字体丢失时的崩溃
  • 动画编辑器修复
    • 修复动画编辑器节点关键帧无法直接删除
    • 修复动画编辑器框选后,按下 Ctrl 添加关键帧后复制粘贴、缩放、排列关键帧功能异常
    • 修复动画编辑器属性列表超出不出现滚动条、sample 修改后,当前时间显示未实时更新
  • 环境与光影
    • 修复开启 IBL 之后的材质报错
    • 修复天空盒第一次设置无法显示
    • 修复开启 ShadowMap 阴影后 GPU 预烘焙骨骼动画失效
  • 粒子模块修复
    • 修复粒子材质在节点未启用的情况下无法显示的问题
    • 修复粒子 start speed 效果问题和旋转时的重力效果问题
  • 构建模块修复
  • Tiledmap 修复
    • 修复使用多图集下的 Tilesets 显示错误
    • 修复 TiledLayer getTiledTileAt 函数报错问题
  • 2D 骨骼动画
    • 修复编辑器更新 colorSpine DB 透明度不生效问题
    • 修复 web native Spine 使用 blend mode 显示效果不正确的问题
    • 修复 Spine 挂点节点在编辑器设置 scale 后不生效的问题

 

以上就是 v3.1.2 的重要更新,优化了大量开发者反馈的问题,有些问题由于反馈众多,就不单独列出论坛链接了,如果有修复各位遇到的问题,欢迎大家去关联到本帖并标记已解决。

 

另外,v3.3.0 版本已进入迭代后期,这个版本有一些非常重要的更新可以提前透露给大家:

  • 进一步提高原生化比重,在原生层实现渲染场景,优化性能,为未来的上层原生化和场景管理打好基础
  • 渲染管线优化,降低 IO 压力
  • 优化大项目使用体验:降低编辑器内存使用,避免崩溃,优化卡顿
  • 优化标准光照模型
  • 动画数据重构升级:为动画系统升级和动画状态机做好准备
  • 各个后端物理行为统一
  • 延迟渲染管线优化:光源裁剪、SSPR

 

除此之外还有各种 Demo 也在制作当中,比如已经上架 Store 跑酷 Demo 56
API 文档页面也在进行重新设计,我们都非常重视,会尽力一步步完善 Cocos Creator v3.x 2D & 3D 开发体验!

收起
3.1.1
01 Jun 2021

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

 

Features

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

  • 新增层级管理器面板可批量设置(Alt + 点击)锁定节点的功能(锁定后在场景编辑器面板中无法被选中)

 

  • 当属性检查器中的属性为非 null 类型,但为 null 值时,新增创建功能

 

Bug Fixes

  • [EDITOR]修复构建安卓平台时可能报错的问题
  • [EDITOR]修复使用默认值进行命令行构建时无法成功的问题
  • [EDITOR]修复命令行构建时一些布尔型参数转换错误的问题
  • [EDITOR]修复构建安卓平台时 Target Api Level 修改无效的问题
  • [EDITOR]修复压缩纹理同时选择 ETC1 RGB Separate A 格式与 PNG 格式时,PNG 格式图片生成错误的问题
  • [EDITOR]修复添加骨骼动画事件后无法全部删除的问题
  • [EDITOR]修复动画编辑器分量轨道的选中问题
  • [EDITOR]修复在 Prefab 中引用嵌套 Prefab 中的节点或组件保存后会丢失的问题。
  • [EDITOR]修复在 Prefab 实例中新添加的组件中引用 Prefab 里的节点或组件保存后会丢失的问题。
  • [EDITOR]修复属性检查器界面记录折叠状态失效的问题
  • [EDITOR]修复在属性检查器面板编辑节点 Layer 属性后没有弹出是否一起修改子节点的问题
  • [EDITOR]修复属性检查器面板中数组不识别拖入资源的问题
  • [EDITOR]修改将 SpriteFrame 资源拖到层级管理器面板创建节点时,节点的 Layer 属性不为 UI_2D 的问题
  • [EDITOR]修复资源预览面板中对末级资源无选中记录的问题
  • [EDITOR]修复资源管理器面板在折叠起来的文件夹内不能准确滚动定位到内部资源的问题
  • [EDITOR]修复 Joint Texture Layout 面板无法滚动的问题
  • [ENGINE]修复 SafeArea 组件效果不正确的问题 #8654
  • [ENGINE]修复小米快游戏平台音频调用 pause 之后,调用 stop 时间刻度没有重置为 0 的问题 #8636
  • [ENGINE]修复华为快游戏平台音频获取 currentTime string 类型的问题 #8656
  • [ENGINE]修复连尚小游戏平台的触摸事件回调会导致在低端机上卡顿的问题 #8661
  • [ENGINE]修复在 iPad 浏览器上触摸事件不可用的问题 #8673
  • [ENGINE]修复 QQ 浏览器、微信小游戏 iOS 端、百度小游戏的重力感应无法开启或不正确的问题 #8632
  • [ENGINE]修复 CacheManager.clearLRU 调用报错的问题 #8663
  • [ENGINE]修复 SubContextView 节点因为节点 Layer 修改而不能被渲染的问题 #8677

 

Known Issues

  • 微信 PC 端的键盘和鼠标适配有问题,我们将在下个版本修复这个问题,也可以手动合并此 PR 修复:#8626
  • Sprite 设置完 RenderTexture 后需要手动调用下 Sprite.updateMaterial 函数,否则可能导致在某些平台出现图像翻转的问题
  • 在场景天空盒选项上勾选 UseIBL 可能会导致 cc_environment 绑定丢失,将在下个版本修复此问题

 

升级说明

 

< 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 年,v2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 v2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,

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

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

收起
3.1.0
12 May 2021

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

 

Features

  • 新增延迟渲染管线(感谢华为海思团队的贡献),可在项目设置中选择延迟渲染管线

  • 引入多线程渲染架构。在原生平台上,传统的单线程架构已无法满足大规模场景的渲染,因此,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 M1Silicon)架构的设备上的支持问题做提示
  • 添加场景即时缓存的实验室功能,默认开启,可在场景异常退出后恢复数据
  • 编辑器添加 ui-curveui-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.LINUXsys.BLACKBERRYsys.EMSCRIPTENsys.TIZENsys.WINRTsys.WP8sys.QQ_PLAYsys.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 的开发体验和运行效率,支撑好 2D3D 等不同品类的重度游戏顺利上线。

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

收起
3.0.1
14 Apr 2021

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

 

Features

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

 

可选值为 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 的开发体验和运行效率,支撑好 2D3D 等不同品类的重度游戏顺利上线。

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 正式版在预览版的基础上,进一步优化了性能,完善了品质,并推出了更多功能,例如接入了 Spine,DragonBones 的原生运行时,支持使用 NPM 库,重构了 Prefab 系统与 UI 系统等诸多内容。欢迎所有开发者使用与体验!

3.0 使用了面向未来的全新引擎架构,将为引擎带来高性能、面向数据及负载均衡的渲染器,并且无缝支持 Vulkan & Metal 多后端渲染,未来还会支持移动端 VR/AR 及部分主机平台。下面对 3.0 的部分特性进行简要介绍。

强大的编辑器特性

一体化的编辑器,带来轻量易用的创作体验。Cocos Creator 3.0 在 Cocos Creator 2.x 沿用多年的编辑器框架上进行了重构、拓展和升级。

  • 全新界面设计,更加简洁清晰
  • 资源系统升级,增强对超大项目的支持,更加高效可靠
  • 模块之间代码隔离,纯消息驱动,更加稳定
  • 插件系统彻底模块化,迎接更强大的插件机制

一键接入 Cocos Service 优质服务

Cocos Creator 3.0 可一键接入 Cocos 官方推出的各类优质服务,提升开发效率,推出更多优质内容,Cocos 也将持续推出更多更优质的服务。

全新的 Prefab 系统

Creator 3.0 重新实现了 Prefab 系统,

  • 支持 Prefab 自动同步
  • Prefab 实例可覆写 Prefab 资源中的属性
  • 支持 Prefab 嵌套

构建

缓存构建内容

在构建之后,Creator 3.0 将会缓存大部分构建内容,包括资源,压缩纹理,自动图集,引擎代码等,在之后构建中,如果没有变化,将直接使用缓存内容,加快构建速度,提升效率。

任务式构建列表

构建发布将以构建任务的形式进行,保存每次构建的配置、状态、log 等,方便切换构建任务以及查看历史配置。

构建后单独编译、生成

提取了各个小游戏平台的生成阶段,允许在构建之后修改文件内容重新生成 rpk/cpk,同时可以支持在编译前后添加构建钩子来定制构建流程。

支持 Asset Bundle

和 2.4 一样,3.0 也使用 Asset Bundle 作为资源模块化工具。开发者可以将贴图、脚本、场景等资源构建为多个 Asset Bundle 中,进而在游戏运行过程中按需加载,从而减少首次下载和加载游戏所需的时间。Asset Bundle 可以按需求随意放置,比如可以放在远程服务器、本地,或者小游戏平台的分包中,也可以跨项目复用,用于加载子项目中的 Asset Bundle。

Splash Screen

支持在构建时设置 Splash Screen,用于在游戏启动之前显示一段过场动画,优化首屏启动速度。

GameView

GameView 是内嵌于编辑器的游戏运行面板,开发者无需打开浏览器预览,即可在编辑器中直接运行游戏。除了更无缝的开发体验,还能在游戏运行过程中通过场景编辑器或其它面板实时调试、修改元素状态,让游戏开发更高效!

插件

强大的插件系统

Cocos Creator 3.0 拥有更加强大的插件系统,编辑器几乎所有功能模块都是以插件形式存在。你可以在扩展菜单中快速创建自己的插件,从而实现自己想要的效果。另外,Cocos Creator 3.0 还提供了扩展管理器,可以轻松管理所有扩展插件的运行和卸载。

消息通信

插件可以使用 IPC 消息与其他插件或编辑器进行通信,快速方便地使用编辑器内部已提供的能力。Cocos Creator 3.0 还提供了消息管理器,可以清晰地看到目前编辑器内已提供的功能,降低插件开发门槛。

动画编辑器

动画编辑器是我们一直在持续优化的重要模块,除了标准的位移、旋转、缩放动画和序列帧动画以外,这套动画系统还支持驱动任意组件属性和用户自定义属性,再加上可任意编辑的时间曲线和创新的移动轨迹编辑功能,能够让内容生产人员不写一行代码就制作出细腻的各种动态效果,任意驱动游戏逻辑。

除常规操作外,3.0 的动画编辑器更提供了以下快捷操作,帮助游戏开发者实现想要的内容:

  • 批量关键帧间隔调整
  • 跨节点轨道复制粘贴
  • 间接属性(如材质属性)关键帧编辑
  • 动画编辑器内直接对资源进行选取、直接编辑关键帧数据
  • 多选关键帧的缩放、移动和删除
  • 支持多选节点后批量添加属性轨道
  • 支持复制粘贴节点上的所有动画数据
  • 支持屏蔽无关键帧节点与搜索节点
  • 支持编辑分量轨道
  • 支持调整动画编辑器布局

更完善的工具链

  • 支持模型预览
    编辑器中选中模型后可以对模型资源进行全方位预览,也可以查看默认材质中使用的各种贴图。
  • 新版的 FBX 导入器
  • 支持 glTF 资源的导入,支持 khr-draco-mesh-compression、sparse accessor
  • 支持动画切割
  • 提供 Mesh Optimizer 工具
  • 模型导入支持 quantized joints/weights

地形编辑器

便捷的地形系统,快速绘制地形纹理。地形编辑主要包括三大功能:管理(Manage)、雕刻(Sculpt)、描绘(Paint)。同时支持 Normal Map,PBR 材质和自定义材质。

内置烘焙系统

烘焙是通过预先计算光源对物体的影响来生成光照贴图并应用到场景中的过程,可以在不损失运行效率的前提下大大提升静态场景的画面表现。

配置

可视化的宏配置

提供了修改引擎宏配置的快捷方式,配置的宏将会在预览、构建时生效,同时也会跟随自定义引擎的配置更新当前宏配置的默认值。

通过预设批量配置压缩纹理

支持添加压缩纹理预设配置,用于快速配置纹理的压缩方式。给图片设置预设后,还可以直接修改预设来批量更新对应的纹理,大大方便了项目的全局管理。

支持 2.x 项目迁移

为了方便 2.x 用户升级,我们在 3.0 中提供了项目迁移插件,可将 2.4.3 以上版本的项目迁移到 3.0.0 版本中,此工具将支持旧项目资源完美导入,以及代码的辅助导入。代码辅助导入会把 js 转换成 ts,添加组件类型声明、属性声明及函数声明,组件在场景中的引用都会得到保留,并且函数内部的代码会以注释的形式导入进来,可以减轻开发者的升级难度。不过 2.x 的 API 和 3.0 仍然有不小的差异,我们能尽可能通过 deprecation 和 removal 机制来做运行时警告,开发者的代码仍需做不小的调整才能够完美升级到 3.0。

强大的引擎特性

Cocos Creator 2.4 在 2D 渲染方面很强大,Cocos Creator 3.0 则允许开发者制作出更加精美的 3D 游戏。我们在 3.0 中将两者的优势进行了融合,全面支持 2D、3D 的各种功能特性,无论 2D 还是 3D,3.0 都将满足你的需求。

渲染系统

渲染系统作为游戏引擎的核心模块,起着至关重要的作用,直接决定了游戏所能输出给玩家的内容。一个优秀的渲染系统还必须兼顾各类平台,抹平平台间的差异。Cocos Creator 3.0 的渲染系统,从架构到设计都是以面向未来、高性能、跨平台为目标,极大地提升了渲染能力和健壮性。

  • 支持 Metal, Vulkan, WebGL 1.0,WebGL 2.0,GLES2, GLES3 的多渲染后端,向渲染管线层提供统一的 GFX 图形 API 层
  • 贴近现代图形 API 的 GFX API 设计,帮助渲染管线层尽可能释放现代图形 API 提供的性能和可能性
  • 内置前向渲染管线,支持用户自定义渲染管线
  • 基于物理的光源、摄像机和材质,帮助开发者用工业化流程制作最真实的视觉效果。
  • 支持 GPU Instancing 合批优化,适用于绘制大量顶点数据相同的动态模型,更支持对包含骨骼动画计算的模型进行 instancing 合批
  • 支持全局雾效
  • 强大的原生渲染器,使用内存共享机制减少 JSB 调用,加快数据访问
  • 支持 ASTC,ETC,ETC2,PVR 等压缩纹理

光影

在 3D 世界中,光与影一直都是极其重要的组成部分,它们能够丰富环境表现,质量好的阴影可以达到以假乱真的效果,并且使得整个世界更具立体感。

  • 基于物理的光源
    Cocos Creator 3.0 采用光学度量单位来描述光源参数。基于光学度量单位,我们可以将光源的相关参数全部转化为真实世界中的物理值。这样,设计人员可根据实际灯光的工业参数以及真实环境的实际物理参数来调节光照强度、颜色、范围等信息,使整体光照效果和光照衰减更加符合真实的自然环境。
  • 基于多 Pass 的多光源支持
  • 支持高性能的平面阴影 Planar Shadow
  • 基于 Shadow Map 的方向光和聚光灯动态阴影,支持 PCF 软阴影与 GPU Instancing

粒子系统

粒子系统是游戏引擎特效表现的基础,它可以用于模拟的火、烟、水、云、雪、落叶等自然现象,也可用于模拟发光轨迹、速度线等抽象视觉效果。良好的粒子效果可以使游戏画面更加惊艳。

  • 支持多达数十个模块设置,并支持各类曲线,常量变化
  • 支持 GPU 粒子,极大提升渲染性能
  • 支持 Cocos 传统的 2D 粒子

材质系统

材质作为资源,决定了其所附加的物体的渲染效果,几乎游戏中所有渲染出来的效果都与材质密不可分。材质系统作为基础模块,为上层建筑提供了坚实的基础。

  • 内置基于物理的标准材质
  • 支持 Cocos Effect
    Cocos 设计的基于 YAML 和 GLSL 的 Cocos Effect,是一种单源码嵌入式领域特定语言 (single-source embedded DSL),YAML 部分声明流程控制清单,GLSL 部分声明实际的 Shader 片段,这两部分内容上相互补充,共同构成了一个完整的渲染流程描述。
  • 支持超过 32 个 Effect 宏定义
  • Cocos Effect 编译器自动剔除无效代码
  • 支持导入 Effect 头文件
  • Effect 的资源面板现已支持预览编译后的 Shader 代码,并支持可视化编辑 Shader 的每个 Define
  • 支持材质预览

中间件

  • 支持 TiledMap
  • 支持 Spine、DragonBones
  • 支持 Spine、DragonBones 和 TiledMap 在 3D 场景中渲染(需自定义材质控制深度检测)

骨骼动画系统

Cocos Creator 3.0 内置了通用的动画系统用以展示基于关键帧的动画。在编辑器中我们可以很方便地生产关键帧动画剪辑。我们能也支持导入外部 FBX、glTF 资源中已经包含的骨骼动画,资源管理器中可以对这些动画进行二次剪辑,在动画编辑器中可以预览动画效果,添加动画事件触发器,通过动画系统 API 也可以自如得控制动画播放。

除此之外,我们还支持以下特性:

  • CPU 或 GPU 驱动的骨骼动画,可自由切换
  • 支持动画的融合过渡(CPU 驱动)
  • 使用二进制格式存储骨骼动画,减少文件大小
  • 支持通用动画与骨骼动画两种组件
  • 支持 Uniform 等材质子属性动画
  • 支持 CPU 驱动的 Morph Target (Blend Shape)

脚本系统

Cocos Creator 3.0 的项目开发全面转向了 TypeScript,项目中也不再支持 JavaScript。我们在 3.0 中进一步完善了对 TypeScript 的支持:

  • 拥抱 ES6 和 TypeScript,完善的代码提示和自动导入
  • 属性支持独立的 type decorator: @integer@float@string@boolean@type 等
  • 支持 Async Await 语法
  • 可选链(Optional Chaining)支持
  • 空值合并(Nullish Coalescing)支持
  • 某些循环引用行为将在运行检测并作出警告
  • 增加 core-js polyfills 来帮助部分低端平台补全 ES6 支持
  • 支持 loose 编译模式,可以减小包体和优化性能
  • 支持使用 NPM 库
  • 细分引擎模块,允许更细致的模块剔除

UI 系统

Cocos Creator 3.0 延续了 2.x 的 UI 设计,并进一步优化升级,包含以下内容:

  • 灵活简洁的 2D 渲染和 UI 交互、排版组件,支持包括 Sprite, Label, Button, Widget 等 20 种组件,你可以使用这些基础组件组合出各种类型的 UI 效果
  • 支持静态合批
    引擎提供了 UIStaticBatch 组件,不需要频繁改动的 UI 可以使用此组件来缓存渲染数据,从而降低渲染消耗,提高性能
  • 支持运行时动态合图,减少 drawcall 数量,优化性能
  • 合并了 UI 渲染流程和前向渲染流程,允许 2D 和 3D 渲染组件混排,完全由节点 Layer 和摄像机 Visibility 决定渲染可见性

物理

Cocos Creator 3.0 目前内建了轻量的碰撞检测系统 Builtin 和具有物理模拟的物理引擎 cannon.js,以及由功能强大的 bullet 编译成为 asm.js/WASM 版本的 ammo.js,并为用户提供了高效的组件化工作流程和便捷的使用方法。引擎组将持续对物理系统进行完善与优化,提供更多功能特性以及提升性能,并将对接更多物理系统后端,我们很快将在后续版本中推出 PhysX 的后端支持(包括原生平台,小游戏平台,Web 平台),将大大增强物理系统的原生性能和能力,未来更将会支持包括布娃娃系统,布料模拟,CCD 检测等等功能特性。

  • 支持多物理后端选择,包括 ammo.js、cannon.js 以及更为轻量的 builtin 物理
  • 支持微信小游戏使用 WASM 物理后端,能在 iOS 上获得更高的性能表现
  • 物理系统支持固定步长刷新
  • 支持物理材质
  • 支持包括单形、圆锥、平面、地形、胶囊体、圆柱体、静态网格碰撞体等多种实用的碰撞体
  • 支持点到点、铰链约束组件
  • 网格碰撞器添加凸包近似功能
  • 支持传统 Creator 2D 物理与碰撞系统

详细改动(相比 Creator 3D)

Editor

  • [3.0 NEW FEATURE] 新的 FBX 导入器
  • [3.0 NEW FEATURE] 编译时支持 loose 编译模式
  • [3.0 NEW FEATURE] 地形支持 normal map 和 pbr 材质
  • [3.0 NEW FEATURE] 在 GameView 模式下支持 EditBox
  • [3.0 NEW FEATURE] 支持编译项目脚本时按照预编译宏进行代码剔除
  • [3.0 NEW FEATURE] 支持构建过程中,剔除 deprecated 的兼容代码,减少包体
  • [3.0 NEW FEATURE] 全新的 Prefab 系统,支持 Prefab 嵌套
  • [3.0 NEW FEATURE] 地形系统支持使用自定义画刷以及设置法线贴图
  • [3.0 NEW FEATURE] 支持资源包导入导出功能
  • [3.0 NEW FEATURE] 原生平台支持脚本加密
  • [3.0 NEW FEATURE] 新增华为 AGConnect 构建平台
  • [3.0 NEW FEATURE] 新增华为快游戏调试工具
  • [3.0 NEW FEATURE] 支持接入 Cocos Service
  • [Sync 2.x] 支持模拟器预览
  • [Sync 2.x] 支持发布连尚小游戏平台
  • [Sync 2.x] 支持发布趣头条小游戏平台
  • [Sync 2.x] 支持构建 Android Instant
  • [Sync 2.x] 支持新版序列化机制
  • [Sync 2.x] Asset Bundle 支持
  • [Sync 2.x] 支持预览时引擎模块剔除
  • [Sync 2.x] 编辑器支持导入 JSON 资源
  • [Sync 2.x] 编辑器支持导入文本资源
  • [Sync 2.x] 编辑器支持导入 LabelAtlas 资源
  • [IMPROVE] 升级 electron,支持 M1 芯片的电脑

Engine

  • [3.0 NEW FEATURE] 支持使用 NPM 库
  • [Sync 2.x] 支持 Tiledmap
  • [Sync 2.x] 支持 Spine
  • [Sync 2.x] 支持 DragonBone
  • [Sync 2.x] 支持 MotionStreak
  • [Sync 2.x] 支持 WebView
  • [Sync 2.x] 支持 VideoPlayer
  • [Sync 2.x] 支持 2d 物理与碰撞系统,包括 box2d 与 builtin
  • [Sync 2.x] 支持 Asset Manager 资源管理
  • [Sync 2.x] 支持 LabelShadow
  • [Sync 2.x] 支持 SafeArea
  • [Sync 2.x] Mask 支持 image stencil
  • [Sync 2.x] 音频支持多播
  • [Sync 2.x] 支持动态合图
  • [IMPROVE] UIMeshRenderer 支持接收平行光照
  • [IMPROVE] 移除 cc.Class() 式声明
  • [IMPROVE] 重构 3d 物理碰撞矩阵,碰撞矩阵仅用于初始化刚体的分组和掩码,不再维护更新,废除 Use Collision Matrix 配置项
  • [IMPROVE] 重构 3d 刚体,移除 RigidBody.isKinematic,增加 RigidBody.type 用于设置刚体类型,移除 fixedRotation, 改为使用 angularFactor 代替
  • [IMPROVE] UI 支持自定义材质
  • [IMPROVE] 优化 UI 系统性能,减少 drawcall 数量
  • [FIX] 修复 Safari 14 的性能问题
  • [FIX] 修复 Button 组件 Scale 设置异常的问题
  • [FIX] 修复 submodel 的 lightPassIdx 一致导致渲染出错的问题
  • [FIX] 修复地形碰撞器在节点缩放后,与渲染效果不匹配的问题
  • [FIX] 修复调用 view.setFrameSize 接口报错的问题
  • [FIX] 修复 EditBox 组件在 InputMode 不是 ANY 的情况下,设置 label 对齐方式无效的问题
    ‍‍‍‍‍‍‍‍‍

Mini Game

  • [3.0 NEW FEATURE] 支持全新的子域方案
  • [3.0 NEW FEATURE] 支持微信小游戏使用 wasm 物理后端

Native

  • [3.0 NEW FEATURE] 支持 Metal 渲染后端
  • [3.0 NEW FEATURE] 支持 Vulkan 渲染后端
  • [IMPROVE] 进一步减少 jsb 调用,优化性能

Known Issue

  • 安卓上的 Vulkan 后端目前存在性能问题,我们将在之后版本进行修复
  • 在 m1 芯片的机器上,编译 ios 模拟器会出现报错,需要手动把 arch 变成 arm64,将在后续版本进行修复
  • Android 暂不支持发布 x86_64 架构
  • 原生平台暂不支持使用 freetype 进行文字渲染
  • Button 组件暂不支持 enable auto gray effect 选项
  • 目前无法对场景中的 Prefab 实例进行创建组件,删除组件,删除子节点,调整子节点顺序功能,建议在 Prefab 资源中进行这些操作
  • 场景中节点目前无法引用 Prefab 中的节点或组件
  • 当地形不是 n*n 的时候,烘焙会失败
  • 老版本项目升级后,Prefab 数据迁移可能会出现问题,请参考帖子获取最新的修复方案

Breaking changes

  • 引擎源码内置的 effect 统一更改为和编辑器资源不同的命名规则,如果项目场景里完全没有用到某个 effect,现在在脚本里用 effect 名字是获取不到了(比如 builtin-unlit 等)。建议开发者在需要程序创建材质时,统一把 effect asset 作为脚本的 property 暴露出来,在场景里挂载,然后在 material.initialize 时直接传入。
  • 编辑器 HOME 目录从 ~/.CocosEditor3D 切换回了 ~/.CocosCreator,插件目录由 packages 更名为 extensions。3.0 之后的插件,都会存放在 ~/.CocosCreator/extensions 和 PROJECT/extensions 里
  • 原先的子域方案不再适用,请切换到最新的子域方案
  • 不支持 JavaScript,仅支持 TypeScript
  • 不再支持 cc 全局变量,请通过模块导入来使用
  • 2D 节点现在也会严格按照 layer 和 camera 的 visibility 进行能否渲染的判断,在多个摄像机存在的情况下可能会出现重复渲染的情况,需要重新调整节点的 layer
  • 物理事件重构,不再支持静态刚体之间的事件,建议在监听事件的碰撞体对应节点上添加 Kinematic 或 Dynamic 的刚体组件
  • 无法升级到新的 Prefab 系统的 Prefab,会断开关系,还原成一个普通节点

API 更新(相对 Cocos Creator 3D)

  • 物理材质类型名称进行了变更
Creator 3D v1.2Creator v3.0
PhysicMaterialPhysicsMaterial
  • geometry 空间下的部分类型名称和方法名称进行了变更
Creator 3D v1.2Creator v3.0
lineLine
planePlane
rayRay
triangleTriangle
sphereSphere
aabbAABB
obbOBB
capsuleCapsule
frustumFrustum
MorphModelmodels.MorphModel
ray_aabbrayAABB
ray_planerayPlane
ray_trianglerayTriangle
ray_sphereraySphere
ray_obbrayOBB
ray_capsulerayCapsule
ray_subMeshraySubMesh
ray_meshrayMesh
ray_modelrayModel
line_planelinePlane
line_trianglelineTriangle
line_aabblineAABB
line_obblineOBB
line_spherelineSphere
aabb_aabbaabbWithAABB
aabb_obbaabbWithOBB
aabb_planeaabbPlane
aabb_frustumaabbFrustum
aabbFrustum_accurateaabbFrustumAccurate
obb_pointobbPoint
obb_planeobbPlane
obb_frustumobbFrustum
obbFrustum_accurateobbFrustumAccurate
obb_obbobbWithOBB
obb_capsuleobbCapsule
sphere_planespherePlane
sphere_frustumsphereFrustum
sphereFrustum_accuratesphereFrustumAccurate
sphere_spheresphereWithSphere
sphere_aabbsphereAABB
sphere_obbsphereOBB
sphere_capsulesphereCapsule
capsule_capsulecapsuleWithCapsule
  • sys 下的某些平台变量进行了变更
Creator 3D v1.2Creator v3.0
BAIDU_GAMEBAIDU_MINI_GAME
VIVO_GAMEVIVO_MINI_GAME
OPPO_GAMEOPPO_MINI_GAME
HUAWEI_GAMEHUAWEI_QUICK_GAME
XIAOMI_GAMEXIAOMI_QUICK_GAME
JKW_GAMECOCOSPLAY
ALIPAY_GAMEALIPAY_MINI_GAME
BYTEDANCE_GAMEBYTEDANCE_MINI_GAME
  • Canvas 组件不再拥有 clearFlag,color,priority,targetTexture,visibility 等属性,请直接通过 Canvas 组件引用的 Camera 组件获取
  • 2d 相关的部分组件进行了更名
Creator 3D v1.2Creator v3.0
UIRenderableRenderable2D
UIDrawBatchDrawBatch2D

升级指南

为了保障现有的 Cocos Creator 2.4 项目平稳过渡,我们会将 2.4 做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,以及 Apple Silicon (M1) 芯片的支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,

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

而原有的 Cocos Creator 3D 做为 Creator 的分支版本,已经面向中国进行了长达一年的迭代,成功上线了星空大决战最强魔斗士等重度项目!3.0 发布后,Creator 3D 也将包含在 3.0 中,现有的 1.2 项目都可直接升级,因此 Cocos Creator 3D 后续不会再发布独立版本,还望周知。

虽然我们不建议开发中的项目,特别是即将上线的项目强升 3.0,但是我们仍将在 3.0 正式版推出 2.x 资源导入工具。如果现有项目有特殊原因需要升级,并且遇到了技术上或者工作量上的困难,也可以联系 zhengxiong.zhao@cocos.com 获取我们的人工协助!

参考文档

收起