Cocos Creator v2.2.0 测试版如约而至(10/16 更新 rc.5)

本次更新的 v2.2.0 版本,旨在提升原生平台性能,建议对原生平台性能有要求的开发者升级。由于开发者使用引擎的姿势千差万别,疏漏在所难免,为了确保该版本能更好地服务于你们的项目,建议所有准备升级到 2.2.0 的项目提前试用。

What’s New

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

(详细说明待补充)


支持 3D 模型渲染合批

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

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

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

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

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

支持环境光设置

我们在 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 倍。

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

升级 Spine 运行库到 3.7

支持了 Spine 的局部换装
文档详见:
https://docs.cocos.com/creator/manual/zh/components/spine.html
案例详见:
https://github.com/cocos-creator/example-cases/tree/master/assets/cases/spine/SpineSkin.fire
新增顶点特效
文档详见:
https://docs.cocos.com/creator/manual/zh/components/spine.html
案例详见:
https://github.com/cocos-creator/example-cases/tree/master/assets/cases/spine/SpineMesh.fire

大幅增强 TiledMap 支持

支持 grid 旋转、grid 动画、图象图层、图层偏移、object group 文本的支持、支持单个图层多个 Tileset,修复了单个地图顶点超过 65535 后渲染错误的问题。
支持在场景中添加子节点,并与地图产生遮挡关系
文档详见:
https://docs.cocos.com/creator/manual/zh/components/tiledmap.html
案例详见:
https://github.com/cocos-creator/example-cases/tree/master/assets/cases/tiledmap/ShieldNode.fire

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

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

Release Notes

Improvements

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

Editor

  • 修复退出 Prefab 编辑模式后,预览时无法获取场景名的问题
  • 修复退出 Prefab 编辑模式后,场景编辑器中的 3D 节点可能会显示错乱的问题

Engine

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

Native

  • 修复原生平台上暂停音乐后,从后台切回前台,音乐还会继续播放的问题 [#141]
  • 修复 iOSMac 原生平台重新加载 Font 时,可能会引起内存泄露的问题 [#1761]

Web

  • 修复 IE11VideoPlayer 无法全屏的问题 [#4879]

Mini Game

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

BREAKING CHANGES

  • cc.winSizecc.Vec2 类型调整为 cc.Size

升级说明

  • 打开 1.x 项目的话,场景等所有资源将会自动升级,代码如有警告或报错,可参考《1.10.0 资源升级指南》《2.0.0 升级文档》进行调整。
  • 2.0、2.1 项目可直接无缝升级。
  • 从 2.2 开始,我们强化了内存管理机制,现在要求用户通过代码动态创建且独立于场景节点树的 cc.Node 必须通过 destroy() 释放,否则引擎无法知道何时回收这类节点的内存,会导致内存泄露。
    此外,手动从场景中移除的节点,在不需要用到的时候也需要统一 destroy
// 假设 testNode 是场景中的某个节点,若被手动移出场景了,如
testNode.parent = null;
// 或者
testNode.removeFromParent(true);
// 或者
parentNode.removeChild(testNode);
// 若往后 testNode 还会再次用到,则无需手动 destroy 该节点
// 当你不再需要 testNode 时,并且它未重新被添加到场景中,应该手动调用
testNode.destroy();

已知问题

  • 2.2.0 版本暂时不支持节点的 Skew 效果,我们会在后续提供文档引导大家手动开启 Skew 的支持。新项目建议直接使用 3D Sprite 而不是 Skew。旧项目可以先参考 [#5564][#1889] 对 js 和原生引擎进行定制,即可支持 Skew。
  • // 2.1.3 支持的 set
  • 在 Mac 平台的部分机器上会出现 Label 在 CHAR 模式下文字偶现白色边框的情况,该问题影响面很小,会在 2.2.1 修复。更多后续版本计划,可以参考 Roadmap: https://trello.com/b/JWVRRxMG

体验地址

v2.2.0-rc.5 (WINDOWS | MAC)

  • 统一 iOS13 和 MacOS Catalina 深色模式下 EditBox 的字体颜色为白色,背景颜色为黑色
  • 修复安卓上 videoPlayer 停止播放后没有更新 currentTime 的问题
  • ---- 以下修复 2.2 新增问题 ----
  • 修复 builtin-2d-gray-sprite.effect 不受节点透明度控制的问题
  • 修复构建过程中捕获不到异常的问题
  • 修复 TiledMap 旋转算法的问题
  • 修复在粒子节点未激活下,出现的报错
  • 修复模拟器截屏问题

v2.2.0-rc.4

  • ---- 以下修复 2.2 新增问题 ----
  • 修复服务面板无法打开的问题
  • 修复:通过菜单创建的节点,层级显示错误
  • 修复tiledmap旋转错误的问题。
  • 修复原生平台截图问题
  • 修复微信小游戏重新进入游戏帧率可能显示为 120 的问题
  • 使用 VC2017 编译 Windows 模拟器
  • 升级 Cocos Console,修正对 Visual Studio 的版本提示
  • 修复原生平台 custom input assembler 遮罩失效的问题
  • 修复原生平台 zIndex 为负导致的问题

v2.2.0-rc.2

  • ---- 以下修复 2.2 新增问题 ----
  • 修复编辑器拖拽可能失效的问题
  • 还原 scrollview 对属性视图的处理,在未定义 content 时仍然正常显示
  • Label 在 SHRINK模式下,当LineHeight小于OriginSize的时候,确保文本固定显示在节点中心区域内
  • 修复 Spine 等中间件潜在的崩溃问题
  • 尝试修复 native call 测试例的崩溃问题
  • 修复旧版本插件初始化时导致的报错信息
  • 修复 jsb-adapter 中的 effect 传参错误
  • 新增自带范例工程中的 shader 测试例(cases/06_rendering/custom_material/custom_material.fire)

v2.2.0-rc.1

  • 移除了构建 Windows 平台的 VisualStudio 2015 支持,统一使用 2017
  • 修复原生平台暂停的音频,进入后台再回到前台后,自动恢复播放的问题 [#1875]
  • 修复原生平台延迟加载的 Audio,播放后无法停止的问题 [#180]
  • ---- 以下修复 2.2 新增问题 ----
  • 修复 timeline 布局错乱的问题
  • Fix a display error when bmfont dynamic change on native.
  • 修复截图异常
  • 修复 mask 动态赋值 spriteFrame 时,assembler 不存在导致的报错
  • Fix an error when SkinnedMeshRenderer is updated with Uniform
  • 原生平台 3D Sprite 节点在移动或者隐藏重新显示之后,重复的矩阵计算会导致显示错乱。
  • fix gl context creation error on iPad3
  • 修复脚本组件不能直接拖拽到属性检查器添加

v2.2.0-beta.4

  • 修复在动画编辑状态下删除了正在编辑的动画剪辑,动画编辑器将会报错的问题
    ---- 神秘分割线 ----
  • 修复 iOS13 深色模式导致 EditBox 白色字体看不到的问题 [#1866]
  • 修复 Android 平台连续播放多个音频实例后,随机出现部分声音没有的问题 [#1869]
  • ---- 以下修复 2.2 新增问题 ----
  • 修复场景中隐藏节点也能被全选的 bug
  • 修复构建 native 平台勾选 sourcemap 后无法再点击的 bug
  • 修复创建节点菜单无效的 bug
  • 修复内置控件面板滚动无效
  • 修复 MotionStreak 拖尾显示异常
  • fixed deferred load 3d model
  • 修复 bmfont 还是存在问题
  • Fix the problem that it is invalid to modify the Sprite in the inactive state
  • 修复 2.2 videoPlayer 无法播放的问题
  • 修复小米平台 release 模式加载不到引擎库的问题
  • 修复 3d-model 在 华为荣耀9 上显示异常
  • fix error that can not stop video if it is played by clicking playback controls
  • fix crash when restart application
  • 修复 android instant 平台真机运行失败
  • 修复 Spine/DragonBones 缓存模式半透明时,表现不正确的问题
  • 修复 Spine/DragonBones 缓存模式存在裁剪时,会crash的问题
  • 修复原生平台Label更新节点颜色无效的问题

v2.2.0-beta.2

  • 修复组件无法使用 path 作为属性名的问题
  • 支持在自动合图上设置纹理的 Premultiply Alpha, Filter Mode 和 Packable 参数
  • 修复使用 raycast 对 spine 的 boundingbox 进行碰撞检测会报错的问题 [#5462]
  • 修复 Graphics 的 square cap [#5447]
  • 修复 tween 的 repeatForever 无效的问题 [#5443]
  • ---- 神秘分割线 ----
  • 新增了 cc.Label.clearCharCache() API,用于手动清空所有 Label 的 CHAR mode 缓存 [#5435]
  • 在 iOS 上使用 V8 引擎取代 JSC
  • ---- 以下修复 2.2 新增问题 ----
  • 修复动画编辑器,父节点多个子节点的话,编辑器中属性列表位置跑出视窗外了
  • 修复构建 win32 平台的问题
  • 修复 Button 组件会将自定义材质重置回 2d-sprite 材质的问题
  • 修复tiledmap裁剪bug
  • 修复Spine dragonbones材质为空时,会报错的问题
  • fixed batch mesh renderer
  • Fix the problem of 3d node display error when use the perspective projection on the native platform
  • Fix the display error after BMFont text modification
  • 修复 camera 的 screen-to-world-point 计算问题
  • fix native sprite position incorrect when parent opacity is zero

v2.2.0-beta.1

  • 解决 Windows 平台上由于网络音频数据可能导致的崩溃问题 [#1852]
  • 启用压缩纹理后,自动判断是否支持 webp 格式,无需手动设置 cc.macro.SUPPORT_TEXTURE_FORMATS [#5441]
  • 修复 Facebook Instant Games 初始化报错
  • ---- 神秘分割线 ----
  • 修复构建面板打开后项目的初始场景会被重置
  • 修复 Windows 模拟器无法正常运行
  • 实现上文提到的“进一步提升 Spine 和 DragonBones 的性能
  • 优化 Spine 启用加速模式后的初始化卡顿问题
  • 修复部分 DragonBones 动画播放不正确的问题
  • 修复小游戏平台 AudioSourceplayOnload 可能无效的问题

v2.2.0-alpha.9

v2.2.0-alpha.5


Creator 项目不支持降级,因此请大家使用测试版时务必先备份好自己的项目!
注意:如果有自定义引擎,请先还原为编辑器内置引擎,否则版本不匹配将无法使用新版编辑器。
本帖仅用于问题测试版相关问题,请勿回复无关内容。所有测试版相关问题请在此回帖,不要另外发帖。

版本测试流程:alpha => beta => rc => 正式版
alpha: 开发过程中的技术预览版,功能还在开发当中,只经过冒烟测试,未经测试团队验证
beta: 功能接近完整的测试版
rc: 发行候选版本,原则上避免进行任何改动。如果用户没反馈什么大的问题,将直接修改文件名作为正式版

6赞

2.1.x能平滑升级吗?

毫无压力

66666666666 给力

我草我草,看我刷出了什么

1赞

还以为要一个月之后才能等到2.2 :+1:

火钳留名!666

前排吃瓜

话说为creator的项目什么不支持降级啊

淚汪汪抱開發組

看了一下electron的版本。。。还是1.7.5.。。。

放心,正式版会更新的

:+1:辛苦辛苦

有崩溃,错误信息如下:

ERROR: TypeError: this._camera.screenToWorld is not a function. (In ‘this._camera.screenToWorld(p, m, cc.visibleRect.width, cc.visibleRect.height)’, ‘this._camera.screenToWorld’ is undefined), location: src/cocos2d-jsb.8dd69.js:12452:27
STACK:
getRay@src/cocos2d-jsb.8dd69.js:12452:27
start@src/project.14b36.js:7749:35
anonymous
src/cocos2d-jsb.8dd69.js:13105:2
invoke@src/cocos2d-jsb.8dd69.js:13068:13
startPhase@src/cocos2d-jsb.8dd69.js:13195:25
mainLoop@src/cocos2d-jsb.8dd69.js:8102:31
t@src/cocos2d-jsb.8dd69.js:8331:11
tick@jsb-adapter/jsb-builtin.js:2006:37

Assertion failed: (data->getVBytes() % _bytesPerVertex == 0), function updateOpacity, file /Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/renderer/scene/assembler/Assembler.cpp, line 247.

CocosCreator v2.1.3 之后就是这个CocosCreator v2.2.0了吗?

改动说明啥时候补充一下

你自己定制了引擎吗?我整个工程里都搜不到这段代码