Cocos Creator v2.2 正式发布

为了让你的游戏在每一个平台上都表现出色,Cocos Creator 每一天都在努力发展。此次更新的 v2.2 版本在大幅提升了原生平台性能的同时,也是 Cocos Creator 第一次在原生性能上超越 Cocos2d-lua 的里程碑版本!v2.2 包含了大量的功能增强和体验改进,欢迎所有版本的开发者升级感受。​

详细更新列表如下,为提高阅读体验,《参考链接》统一放在文末!

What’s New

大幅提升原生平台渲染性能

在此版本中,我们对渲染引擎进行了大幅度升级,在原生平台上实现了巨大的性能提升,不仅完胜了所有 Cocos Creator 过往版本,更超越了 Cocos2d-JS 和性能一贯优异的 Cocos2d-lua。因此 2.2 版本的 Cocos Creator,已经能够在原生平台上满足所有 Cocos 新老开发者的性能需求。

在这次的性能测试中,我们选取了 Android 和 iOS 两款比较有代表性的低端机型 OPPO A57 和 iPhone 6S Plus,以便贴近真实使用场景,因为通常高端机型的性能问题都不大。我们对比测试了 Cocos Creator 2.2.0、Cocos Creator 1.9.3,还有最传统和有代表性的 Cocos2d-JS 3.17.1 及 Cocos2d-lua 3.17.1。测试结果表明:

  • 在 Android 原生上,Cocos Creator 2.2.0 的性能是 Cocos2d-lua 和 1.9.3 版本的 1.5 – 1.7 倍。
  • 在 iOS 原生上,Cocos Creator 2.2.0 的性能和 Cocos2d-lua 齐平,是 1.9.3 版本的 3 – 4 倍。

此外,2.2 版本在 iOS 不但帧率获得提升,GC 时的卡顿也大大减轻,实际体验将更加流畅。

下面是详细性能数据:

支持 3D 模型渲染合批

此版本加入了对 3D 模型的渲染合批的支持,该特性能有效降低 3D 游戏的 Drawcall。要启用此特性,你只需在 Mesh Renderer 上勾选 enableAutoBatch 属性,引擎便会根据所用材质,以及 Mesh 的顶点格式、Primitive Type 自动进行合批。为了获得更好的优化效果,建议你只对那些可以被合批并且顶点数量较少的模型启用此选项。

支持 PVR 压缩纹理的 alpha 通道分离

我们在此版本中新增了 PVR 压缩纹理的 alpha 通道分离格式(RGB+A)。该格式使用类似 etc1 的处理方式对纹理的透明通道进行分离和压缩,压缩后纹理高度将会是原图的两倍,因此能避免常规的 PVR RGBA 格式画质很低的问题。

支持自定义浏览器预览模板

允许用户采用类似自定义构建模板的方式对浏览器预览所用的网页进行定制,支持 html、jade、ejs 三种网页格式,详见《网页预览定制工作流程》。

支持环境光设置

我们在 Light 组件中新增了环境光(ambient)类型设置,用于对 3D 场景进行基础照明,常用于解决模型背光面全黑的问题。只需要在节点创建菜单中选择“Create Light → Ambient”即可。也可以在节点上添加 Light 组件,并且设置 type 为 AMBIENT 进行创建。

进一步提升 Spine 和 DragonBones 的性能

在 2.2.0 版本中,我们再次优化了 2D 骨骼动画在各个平台上的性能。

  • 在原生平台上,我们为 Spine 和 DragonBones 补齐了 SHARED_CACHE 和 PRIVATE_CACHE 这两种加速模式的支持。启用加速模式后,Android 平台 Spine 性能是原先的 2 倍,DragonBones 性能是原先的 7 倍。iOS 平台 Spine 性能是原先的 3 倍,DragonBones 是原先的 5 倍。
  • 在 Web 平台上启用加速模式后,Android Spine 性能是原先的 3 倍,DragonBones 性能是原先的 4 倍。iOS Spine 性能是原先的 1.25 倍,DragonBones 性能是原先的 1.39 倍。

下面是详细数据:

原生加速模式性能测试结果
原生加速模式内存测试结果
Web 加速模式性能测试结果

要启用加速模式,只需要在 Spine 或 DragonBones 组件上设置 Animation Cache Mode 为 SHARED_CACHE 或 PRIVATE_CACHE 即可。关于加速模式的更详细信息,可参考文档中的属性说明。

升级 Spine 运行库到 3.7

  • 支持 Spine 局部换装,使用方法可参考《Spine 组件参考:Spine 换装》,使用案例详见引擎自带范例中的 SpineSkin。
  • 支持 Spine 顶点效果,使用方法可参考《Spine 组件参考:Spine 顶点效果》,使用案例详见引擎自带范例中的 SpineMesh。

大幅增强 TiledMap支持

2.2 进一步完善了 TiledMap 的支持。现在可支持 grid 旋转、grid 动画、图象图层、图层偏移、object group 文本,支持单个图层多个 tileset。还支持在场景中添加子节点,并与地图产生遮挡关系。并且修复了单个地图顶点超过 65535 后渲染错误的问题。文档详见《TiledMap 组件参考》,使用案例详见引擎自带范例中的 ShieldNode。

属性检查器标签支持宽度调节

我们为属性检查器加入了宽度调整功能,用以解决在某些组件上属性名显示不全的问题。现在用户无需大幅调整整个面板的尺寸,只需要拖动属性名右侧的分割线就可以自由调节分割比例。

Release Notes
Improvements

  • 优化编辑器及各面板的启动速度
  • 避免每次微信小游戏构建时都会覆盖目标工程中的配置文件的操作,以便保留用户的自定义配置
  • 将 SpriteFrame 资源面板和 Sprite Editor 中的九宫格(border)属性从 trim(裁剪)后的边距改为原图边距。使其和美术作图时给出的数据一致,对旧项目数据没有影响
  • 构建过程中自动对其它小游戏平台的开放域组件进行剔除,用户无需在模块设置里手动配置
  • 构建面板中的原生平台包名将根据不同平台分开存放
  • 升级编辑器所用的 Electron 到 5.0.8,V8 到 7.3,node.js 到 12.0.0
  • 优化 Spine 启用加速模式后的初始化卡顿问题
  • 正式在 iOS 平台支持 etc2 压缩纹理
  • 在 iOS 平台默认启用 OpenGLES3
  • 适配 macOS Catalina

Editor

  • 修复退出 Prefab 编辑模式后,预览时无法获取场景名的问题
  • 修复退出 Prefab 编辑模式后,场景编辑器中的 3D 节点可能会显示错乱的问题
  • 修复在动画编辑状态下删除了正在编辑的动画剪辑,动画编辑器将会报错的问题

Engine

  • 修复使用 once 监听的事件无法用 off 注销的问题
  • 修复 cc.systemEvent 监听 once 事件无效的问题(感谢 Zty)
  • 修复 DragonBones 和 Spine 的贴图不支持场景资源延迟加载的问题[#4299]
  • 修复部分 DragonBones 动画播放不正确的问题
  • 修复使用装饰器声明 CCClass 时,类型设置为 JavaScript 的原生 Number 、 String 等类型时不会提示警告的问题
  • 修复声明 CCClass 时,将默认值直接指定为 cc.String 、 cc.Boolean  等类型时默认值不对的问题

Native

  • 修复原生平台上暂停音乐后,从后台切回前台,音乐还会继续播放的问题 [#141] [#1875]
  • 修复 Android 连续播放多个 Audio 实例后,随机出现部分声音没有的问题 [#1869]
  • 修复原生平台延迟加载的 Audio,播放后无法停止的问题 [#180]
  • 修复 iOS 或 Mac 原生平台重新加载 Font 时,可能会引起内存泄露的问题 [#1761]
  • 修复 iOS 13 深色模式导致 EditBox 白色字体看不到的问题 [#1866]

Web

  • 修复 IE11 中 VideoPlayer 无法全屏的问题 [#4845]

Mini Game

  • 修复 AudioSource 的 playOnload 可能无效的问题
  • 避免 iOS 上百度小游戏切场景的过程中可能会黑屏的问题

REMOVED

  • 移除了构建 Windows 平台的 VisualStudio 2015 支持,统一使用 2017。

BREAKING CHANGES

  • 将 cc.winSize 由 cc.Vec2 类型调整为 cc.Size 

KNOWN ISSUES

  • 2.2.0 版本暂时不支持节点的 Skew 效果,我们会在后续提供文档引导大家手动开启 Skew 的支持。新项目建议直接使用 3D Sprite 而不是 Skew。旧项目可以先参考 [#5564] 和 [#1889] 对 js 和原生引擎进行适配,即可支持 Skew。
  • 发布到 Windows/Mac 之后,屏幕如果发生 resize 将会有适配问题,目前暂时需要手动参考 [#1930] 对引擎进行适配。
  • 部分旧项目参考了论坛 https://forum.cocos.com/t/topic/79780 的方案,在 iOS 和 Android 上实现了屏幕旋转,该方案在 v2.2.0 上暂时失效。目前手动参考 [#1930] 对引擎进行适配就可解决。
  • 在 Mac 平台的部分机器上会出现 Label 在 CHAR 模式下文字偶现白色边框的情况,该问题影响面很小,会在 2.2.1 修复。更多后续版本计划,可以参考 Roadmap: https://trello.com/b/JWVRRxMG 。

升级说明

  • 打开 1.x 项目的话,场景等所有资源将会自动升级,代码如有警告或报错,可参考《1.10.0 资源升级指南》和《2.0.0 升级文档》进行调整。
  • 2.0、2.1 项目可直接无缝升级。
  • 从 2.2 开始,我们强化了内存管理机制,现在要求用户通过代码动态创建且独立于场景节点树的 cc.Node 必须通过 destroy() 释放,否则引擎无法知道何时回收这类节点的内存,会导致内存泄露。

此外,手动从场景中移除的节点,在不需要用到的时候也需要统一 destroy。如果通过 cc.NodePool 管理节点,则不受影响。

更多精彩

从 v2.0.0 用 3D 渲染器重写底层至今,Cocos Creator 经过多个版本的稳步迭代,终于进化成了一款能无损兼顾纯 2D 和 3D 两种项目类型的游戏引擎。将来 Cocos Creator 仍会秉承“2D 优先”的理念,继续死磕 2D 游戏开发体验及基础性能,逐步引入那些适合融入 2D 游戏的 3D 特性,陪伴 2D 游戏团队共同成长。

最后感谢所有帮助 2.2 进行公测的开发者们,感谢所有提前升级并验证 2.2 内部版本的开发团队!

参考链接

《网页预览定制工作流程》

https://docs.cocos.com/creator/2.2/manual/zh/advanced-topics/custom-preview-template.html

《Spine 参考文档》

https://docs.cocos.com/creator/2.2/manual/zh/components/spine.html

《Dragonbones 参考文档》

https://docs.cocos.com/creator/2.2/manual/zh/components/dragonbones.html

《Spine 组件参考:Spine 顶点效果》

https://docs.cocos.com/creator/2.2/manual/zh/components/spine.html

《Spine 组件参考:Spine 换装》

https://docs.cocos.com/creator/2.2/manual/zh/components/spine.html

《TiledMap 组件参考》

https://docs.cocos.com/creator/2.2/manual/zh/components/tiledmap.html

《1.10.0 资源升级指南》

https://docs.cocos.com/creator/manual/zh/release-notes/raw-asset-migration.html

《2.0.0 升级文档》

https://docs.cocos.com/creator/manual/zh/release-notes/upgrade-guide-v2.0.html

[#4299]

https://github.com/cocos-creator/engine/pull/4299

[#141]

https://github.com/cocos-creator-packages/jsb-adapter/pull/141

 [#1875]

https://github.com/cocos-creator/cocos2d-x-lite/pull/1875

[#1869]

https://github.com/cocos-creator/cocos2d-x-lite/pull/1869

[#180]

https://github.com/cocos-creator-packages/jsb-adapter/pull/180

[#1761]

https://github.com/cocos-creator/cocos2d-x-lite/pull/1761

[#1866]

https://github.com/cocos-creator/cocos2d-x-lite/pull/1866

[#4845]

https://github.com/cocos-creator/engine/pull/4845

[#5564]

https://github.com/cocos-creator/engine/pull/5564

[#1889]

https://github.com/cocos-creator/cocos2d-x-lite/pull/1889

[#1891]

https://github.com/cocos-creator/cocos2d-x-lite/pull/1891

 [#1930]

https://github.com/cocos-creator/2d-tasks/issues/1930

中文社区地址:http://forum.cocos.com/

英文社区地址:https://discuss.cocos2d-x.org/