Cocos Creator 2.2.1 正式发布
2019.12.04 by Cocos
Cocos Creator 版本更新

为了让你的作品在每一个平台上都表现出色,Cocos Creator 每天都在全力奔跑。

在之前的 v2.2.0 版本中,我们着力优化了原生平台的渲染性能,有大量的开发者积极升级和体验,这给我们带来了极大的鼓励和信心,非常感谢大家对 Cocos Creator 新版本的关注。

通过论坛、沙龙、企业服务等渠道我们收到了大家反馈的问题和改进建议,对于产品尚未完善之处,向大家表示诚挚的歉意,也衷心感谢所有与我们耐心沟通,提交反馈,与我们共同成长的伙伴们,Cocos 会一如既往地优化产品的性能与使用体验。

经过一个多月时间紧张迭代,v2.2.1 如期发布了。

v2.2.1 在 v2.2.0 的基础上进行了大量的体验优化和缺陷修复,更全面地优化了性能,同时加入了对支付宝小游戏的支持。建议所有版本的开发者升级,升级之前请根据项目情况进行必要的技术评估和版本备份!

What's New       

支持支付宝小游

随着小游戏的发展,小游戏领域也越来越被更多厂商所重视,而新的平台也意味着新的机遇。作为国内的电商巨头,支付宝近期开放了小游戏的支持,Creator 也在第一时间进行了适配,并在 v2.1.4 整合了发布到支付宝小游戏的能力。

目前 Cocos Creator 2.2.1 也同步支持了支付宝小游戏,使用说明请参考《发布支付宝小游戏》。

支持微信小游引擎插件

游戏引擎插件是微信 7.0.7 版本新增的一项功能,能极大减少游戏的下载时间。对于这个重大利好,Cocos 在第一时间就发布了对应的编辑器插件,提供了对 Creator 老版本的有力支持。

目前此功能也正式合并到了 v2.2.1 中,使用起来会更加便捷。开发者们只需在 构建 面板中,勾选“分离引擎,然后正常构建发布即可,无需其它人工操作。详见《微信小游戏引擎插件使用说明》。

Camera 组件增强

  • 新增了 Align With Screen 属性,勾选后摄像机不论处于 2D/3D 节点模式,都会将视窗大小自动保持为整个屏幕的大小。取消勾选的话,开发者可以自由设置 Ortho Size(2D/3D)或者 FOV(3D)。
  • 在 2D 模式下也提供了和 3D 模式相同的 Rect 属性,用于指定摄像机绘制在屏幕上的哪个区域,便于实现类似小地图那样的 Viewport。

Improvements

  • 优化原生平台上调用 addChild 时的性能,提升场景切换速度
  • 支持自动释放运行时的 JSON 资源包,优化内存占用
  • TiledMap 支持 TileSet 包含多贴图格式
  • 优化原生 DragonBones 和 Spine 颜色更新性能(感谢 wyf)
  • 在 cc.director 中增加获取游戏运行总时间的 API getTotalTime()
  • 支持构建小米快游时启用 md5Cache 功能
  • 适配 iOS 13 浏览器对重力感应权限的请求操作
  • 适配 iPadOS 13 的平台检测(感谢 krapnikkk)#5635
  • 命令行构建增加 --force 参数用于跳过项目升级提示
  • 优化原生上的 VideoPlayer 和 WebView 的内存释放时机 #215
  • 支持在原生上开启 WebSocket 服务器 #1921
  • 完善场景文件中的 TRS 浮点数存储精度,提升用户体验
  • 完善编辑器下 Label 和 RichText 设置字体时的操作体验
  • 完善资源面板的文件夹排序

Editor

  • 修复保存设置后,切换项目后设置被还原的问题
  • 修复构建微信小游戏时,对应平台的压缩纹理设置不生效的问题
  • 修复重置编辑器布局后,重命名文件失败的问题
  • 修复 Sprite Editor 未能正确显示旋转后的 plist 文件的问题
  • 修复节点 highlight 时层级管理器不会自动定位的问题
  • 修复 3D 点光源添加到 5 个以上,编辑器报错的问题
  • 修复插件商店无法打开的问题
  • 修复资源导出时的报错
  • 修复构建原生平台时朝向可能设置错误的问题
  • 修复自定构建流程时 md5 重命名在 finish-build 事件之后触发的问题
  • 修复某些情况下造成 Prefab 循环引用,导致参数丢失的问题
  • 修复游戏预览无法完全显示场景内容的问题
  • 修复删除纹理压缩格式后,资源应用按钮没有激活的问题
  • 修复从 v2.1.x 升级到 v2.2,旋转角度可能出错问题
  • 修复升级到 v2.2 后 Mask 的 Image Stencil 效果可能不对的问题

Engine

  • 修复 v2.2.0 节点 Skew 无效的问题
  • 修复子节点 group 与父节点 group 同步的问题 #5723
  • 修复自定义材质实例化之后属性无法设置成功的问题(感谢 Elk953) #5615
  • 修复在 QtWebview 上 ArrayBuffer.isView 未定义导致的报错 #5611
  • 修复低端设备上可能不支持高精度 highp 导致的错误 #5675
  • 修复了某些平台上游戏第一帧 deltaTime 可能为负值的问题 #5641
  • 修复 Sprite 组件 Type 选择 Filled,Filled Type 选择 Radial,修改 filledRange 时表现异常的问题 #5609
  • 修复 Label 组件在 CHAR 模式下,Vertical Align 设为 Top 或 Bottom 时的对齐问题 #5614
  • 修复 EditBox 在 editing-did-began 回调里无法设置 editBox.string 的问题 #5732
  • 修复 Button 组件在 Transition 为 Scale 时,设置节点 scale 无效的问题 #5740
  • 修复粒子系统勾选 Auto Remove On Finish 后,未勾选 Play On Load 时的播放问题 #5618 #1905
  • 修复粒子系统播放后第一帧可能爆裂的问题 #1915
  • 修复使用系统字体时,Font Family 为空导致的渲染问题 #5627
  • 修复当 Spine 还未加载,用户调用 cache 相关接口会报错的问题 #5628
  • 修复 TiledMap Object Group 纹理坐标不正确的问题 #5633
  • 修复 TiledMap 45 度角 Object Group 图片位置不正确的问题 #5728
  • 修复 TiledMap 在同一帧插入删除再插入用户节点,会报组件已存在的问题 #5633
  • 修复 TiledMap 图像图层层级错误的问题 #5587
  • 修复 TiledMap setTiledTileAt() 接口无效的问题 #5713
  • 修复 VideoPlayer 在 show all 布局下竖屏显示的问题#5684
  • 修复当播放其他 video 时,VideoPlayer 组件宽高无法及时更新的问题 #5736
  • 修复在 once 事件回调时执行 off 方法报错的问题 #5626
  • 修复 ttf 延迟加载的问题 #5612
  • 修复重复加载场景报错之后可能导致场景无法加载的问题 #5656
  • 修复手动先释放资源,再移除节点造成纹理丢失的问题 #5588
  • 修复 cc.rotateTo 在部分情况下无效的问题 #5717
  • 修复 cc.rotateBy 在部分情况下无效的问题 #5742

Native

  • 修复 Mask 某些情况下失效的问题 #1899
  • 修复粒子系统颜色透明度过渡不正确的问题 #1910
  • 修复 Camera 勾选渲染多个 stage 时渲染错误问题 #1897
  • 修复陀螺仪无法关闭的问题 #197
  • 修复切换前后台时 audioEngine 可能导致崩溃的问题 #1930
  • 修复 jsb.Downloader 注册回调报错的问题 #1940
  • 修复断点续传下载失败的问题(感谢 gaolizheng)#1931
  • 修复 TiledMap 多贴图的情况下,显示不正确的问题 #190
  • 修复 DragonBones 缓存模式事件未触发的问题 #196
  • 修复 Spine 在 Cache 模式下事件回调与 Web 平台参数不一致的问题 #209
  • 修复 Spine 在 Cache 模式下,使用裁剪动画,且裁剪造成顶点数量增加时,可能导致缓冲区溢出的问题 #1948
  • 修复当节点 scale 不为 1 时,EditBox、WebView、VideoPlayer 显示位置出现偏移的问题 #201
  • 修复 EditBox 输入时切换场景导致卡住的问题 #5804
  • 修复 VideoPlayer 报错的问题 #1934
  • 修复 VideoPlayer 更换 url 之后,会自动切全屏的问题 #205
  • 修复 videoPlayer.resume() 调用无效的问题 #199
  • 修复 WebView 的 evaluateJS() 无效的问题 #207
  • 修复加载 plist 显示的粒子效果不正确的问题 #193
  • 修复剔除 Motion Streak 模块会报错的问题 #198
  • 修复使用 Graphics 组件进行多次绘制之后,已经填充的线条会被自动清除的问题 #198
  • 修复桌面端屏幕 resize 之后,屏幕适配的问题 #1891
  • 修复 Mac 上截屏显示错误的问题 #1900
  • 修复 Windows 下 3D 模型可能显示错误的问题 #1927
  • 修复 iOS 和 Android 上屏幕旋转失效的问题 #1891
  • 修复 iOS 锁屏后解锁可能导致卡住的问题 #1918
  • 修复 iOS 上 WebView 加载网页无效的问题 #1940
  • 修复 Android EditBox 弹出时会将 view 往上推的问题 #1946
  • 修复 Android 上下载时 onProgress 传入参数错误问题 #1919

Mini Game

  • 修复 EditBox 在拉起状态下重复调用 showKeyboard 的问题 #26
  • 修复当节点 scale 不为 1 时,VideoPlayer 显示位置出现偏移的问题 #27
  • 修复部分小游戏平台 cc.sys.os 没定义的问题 #30
  • 修复 vivo OPPO 上 Label 顶部被截断的问题 #5799
  • 修复支付宝上音频播放之后重新播放的问题 #29
  • 修复支付宝上加载资源的报错 #38
  • 修复支付宝 iOS 上的音频加载失败的问题 #30
  • 修复微信 iOS 9 上加载引擎的报错 #5780
  • 修复微信上预加载失败后没有回调的问题 #22
  • 修复微信上 XHR.abort() 调用失败的问题 #20
  • 修复小游戏子包中的图片启用压缩纹理时,无法正常构建子包的问题
  • 修复小游戏子域中 BMFont 的渲染重叠及使用 Cache mode 的报错问题 #5763

DEPRECATION

  • 从 v2.2.0 开始,我们不再建议您使用节点的 Skew 功能。Skew 通常用作在 2D 引擎中模拟 3D 效果,随着 Cocos Creator 对 3D 节点的深入支持,Skew 效果已经完全可以由 3D 节点来实现。所以为了统一使用体验,进一步优化引擎底层实现,我们废弃了 Skew 属性。不过我们依旧会保留一段时间内的向下兼容,开发者可在旧项目中延续原有做法。后续我们将进一步完善兼容方式和升级案例,择机正式移除 Skew 功能。

KNOWN ISSUES

  • 由于 FBX SDK 的兼容性问题,请确保 Windows 版本的编辑器安装在英文路径下,否则可能会无法打开编辑器。此问题将在后续版本修复。
  • 目前在构建原生平台时,不能剔除 Audio 模块,否则将无法正常编译。
  • 目前 Mask 组件嵌套时,可能造成点击事件穿透。如需嵌套 Mask 请参考#5749 对引擎进行定制。
  • 目前粒子系统会按照正方形来渲染纹理,如果使用的纹理不是正方形则会被拉伸。请尽量使用正方形纹理,并自定义 SpriteFrame 的 trim 区域,避免空白区域被剔除。或者参考 #5666 对引擎进行定制。
  • 目前使用 Graphics 绘制的顶点数量超过 65535 之后,将无法进行绘制,如有需要参考 #206 和 #1935 对引擎进行定制。

级说

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

以上就是 Cocos Creator v2.2.1 更新内容,良好的品质离不开细心的打磨,Cocos 会秉持脚踏实地的精神,稳步提升产品品质。

欢迎小伙伴们继续通过论坛、GitHub、Cocos 企业服务等渠道向我们提交使用反馈!

Cocos Creator  下载:https://www.cocos.com/creator

Cocos 中文社区: https://forum.cocos.org/c/Creator