Cocos Creator v2.0.7 正式发布
最近刚刚发布的 Cocos Creator v2.0.6 主要提供了在 Android 和 iOS 上快速接入 Facebook Audience Network 和 Facebook Live Video 的支持,同时优化了 vivo/OPPO 小游戏的构建流程。
这次发布的 2.0.7 则在 2.0.6 的基础上,进行了比较大的升级。修复了不少 2.0.5 以来遗留的问题,大幅提高了原生平台的骨骼动画性能,同步了 2.1.0 的一些改进,建议所有平台还在开发阶段的项目进行升级。
以下是相对于 2.0.6 的改动说明:
注:下文中[蓝色字体]的部分为跳转链接,为了提高大家的阅读体验,所跳链接统一放在文末,还请留意。
What's New
1.支持发布到华为快游戏平台
Cocos Creator 正式支持了发布到华为快游戏,详细用法请查阅[发布到华为快游戏平台]
发布游戏至华为快游戏
2. 大幅优化原生平台上的 Spine 和 DragonBones 性能
之前有不少用户反馈 Cocos Creator 升级到了 2.0 后,原生平台的骨骼动画性能很差,甚至被迫退回到 1.9 或 1.10 版本,为此我们深表歉意。为了解决这个问题,此次更新大幅优化了原生平台上的 Spine 和 DragonBones 的性能,下面是性能测试结果:
测试的分值根据帧率换算而来,值越高性能越好。可以很明显看到,优化后的性能甚至比 1.9、1.10 还快了平均一倍。另外除了性能上的优化,这个版本还支持了 DragonBones 的二进制格式(.dbbin)。
还需要注意的是,这个版本如果运行在 iOS 9 的系统上,反而会引起负优化。因为这个版本更加倚重了 JavaScript 的 TypedArray 数据结构,而 iOS 9 中的 JavaScriptCore 并不支持 TypedArray,所以性能开销反而会变大。iOS 10 或后续的系统都没有这个问题。建议如果项目一定要支持到 iOS 9,则停留在 1.x 版本。
3. 优化基础渲染性能
v2.0 相比 v1.x,有一些情况引擎不会合并渲染批次,导致了 Draw Call 的增加,例如 Color 或 Opacity 不同,或者共用同一贴图的多个 Sprite 组件混用 Simple、Sliced 或 Filled 模式时的情况。这些问题在该版本都得到了优化,只要它们所在节点的 group 相同,Draw Call 都会被合并。此外,节点 Opacity 为 0 会占用 Draw Call 的问题也优化了。
4. 优化 Label 渲染性能
之前如果场景中同时存在着不少 Label 和 Button 之类的图片,并且它们相互叠加,则会打断渲染引擎的合并操作,使得 Draw Call 升高。这个问题在这个版本中得到了进一步优化。
在该版本中,如果 Label 使用的是 TTF(或系统字体),受益于增强后的[动态合图]机制,这些 Label 都将尽可能与其它纹理进行批次合并。只要满足动态合图的要求,总共就只会有一个 Draw Call。该优化只适用于不会频繁更新的 Label,因此需要手动勾选 Label 上的"Batch As Bitmap"来启用。同时,由于兼容性问题,该优化在桌面端的 Chrome 暂时不会启用,有需要测试 DrawCall 的话请使用真机或其它浏览器。
此外,该版本也修复了 BMFont 和其它图片打包为自动图集后,仍然无法合并 Draw Call 的问题。如果 Label 使用了 BMFont,可以尝试将 BMFont 所用的图片和在场景中与其相互打断的图片设置为同一个自动图集,就能提升渲染性能。
5. 新增 Cocos Services 面板
新增了独立的一体化服务面板,通过这个面板,用户可以快速地为游戏继承服务,详见[服务面板]
6. 完整支持微信小游戏资源分包
由于微信小游戏天然适合从用户的 CDN 中远程加载资源,因此在前期的版本中 Cocos Creator 仅提供了代码分包功能,资源分包还未实现。通过近期和用户的交流,以及和 Cocos 其它内部团队的合作,这个版本正式加入了资源分包的支持,使用方法和原来的代码分包完全一致,详见 [分包加载]
7. 增加模拟器调试功能
在项目设置 - 预览运行面板中,新增了“开启模拟器调试界面”选项和“等待调试器连接”选项。前一个选项的作用是,在模拟器预览项目时将自动打开调试窗口。后一个选项的作用是,暂停启动过程直至调试器连接完成,用于调试加载过程。
编辑器改进
在 Dashboard 新建项目的模板中添加了 Matchvs 联网游戏范例
Dashboard 改为在打开工程的时候关闭,工程关闭的时候自动打开
Dashboard 将会自动记录上一次创建的工程路径
优化 Button 在编辑器下的预览效果
优化 Button Click Event 对组件的索引方式,避免脚本重命名后索引就丢失的问题
完善粒子系统的图片导入方式
屏蔽 Spine 和 DragonBones 组件上无效的混合模式,如果有需要请直接在 Spine 或 DragonBones 编辑器中设置。
构建微信小游戏主域工程时,不会再清空子域
修改构建 Android 平台时默认选中的 API Level 为当前最高的 Level(Target API Level)
保证在重复构建项目时,自动图集的文件不会因为内部 SpriteFrame 的排序变了而产生差异
允许设置 RichText 所用的系统字体
新增插件商城在插件下载完成后自动提示用户安装
移除了场景编辑器中的节点路径栏,节点路径可通过层级管理器的节点右键菜单获取
动画编辑器对 cc.Enum 和 cc.Integer 类型的数值默认改用 Constant 曲线,不进行插值
动画编辑器关键帧增删体验优化
编辑器加载自定义引擎时,如果无法成功则自动回退到内置引擎
优化引擎自动编译有关体验
导入 Cocos Studio 场景时,将会自动添加默认 Canvas 和 Camera 节点
新增了其它一系列体验优化
引擎改进
[Native] 在 iOS 和安卓平台重新加入了在 v2.0.0 中移除的 WebView 和 VideoPlayer 支持
[Native] Mac 原生平台切换至 V8 引擎,如需用回 JSC 需手动修改宏,详见[#1515]
[Native] 添加原生平台 LocalStorage 缺失的 key 和 length 属性,详见[#1371]
[Native] 在 iOS 原生平台上采用跟 Android 统一的拼音输入行为,不保留输入未完成的拼音
[Native] 升级安卓编译方式到 NDK r16 + Clang,同时采用 Clang 编译安卓预编译库
[Native] 升级 Android 构建工具配置 Gradle 至 4.4,plugin 至 3.1.4。(Gradle 4.6 有已知 issue 会导致资源打包失败)
[Native] 优化安卓输入框使用体验
[Native] 清理原生平台模版工程对 AnySDK 和 Cocos Analytics 的依赖,改由 Cocos Services 进行集成
[Native] 允许在原生平台的 release 编译模式下启用 V8 调试器
[Native] 简化 jsb-adapter 定制流程
在 Layout 组件上新增 affectedByScale 属性,如果开发者希望 Layout 子节点的缩放能够影响布局,可以手动开启该选项。
允许 RichText 中的字段在响应点击事件时传入自定义字符串作为参数,如 <on click="submit" param="10">Submit</on>
添加了 cc.sys.languageCode 属性,用于获取完整的系统语言信息,以便区分某些语言的不同方言(subtag)。返回值是一个小写的字符串,例如 "zh-tw", "en", "en-us", "fr", "fr-fr", "es-es"。
改善 emoji 在 Label 中的自动换行结果
Label 支持了 XML 格式的 fnt 文件
Label 节点 onEnable 时将立即刷新一次节点的 Content Size
当 Button 的 target 未定义时,将默认使用当前节点
ToggleContainer 增加了和 Toggle 类似的 checkEvents 事件属性,该事件只有在 Toggle 的 isChecked 状态变为 true 时才触发
将 cc.instantiate() 过程中添加到对象上的临时成员变量设为不可枚举
优化 VideoPlayer 在 X5 浏览器上的适配
优化了 VideoPlayer 全屏播放的有关适配
增加 Web 平台上 WebView 的透明度支持
优化了 WebView 的显示位置
支持在微信小游戏上响应 cc.game.EVENT_SHOW 事件时,获取到平台传入的 res 和 referrerInfo 参数
完善微信小游戏资源下载时的容错处理[#56]
新增 CC_RUNTIME 预定义宏,在 OPPO、vivo 小游戏上 CC_RUNTIME 将为 true,CC_JSB 将为 false
Bug Fixes
1. 编辑器修复列表
修复节点大小为 0 时,在场景编辑器中使用矩形变换工具拖动节点导致的锚点计算错误
修复在场景编辑器里面能选中 RichText 子节点的问题
修复场景编辑器中的网格背景会穿透到某些半透明图片上方,导致颜色和运行时有一些差异的问题
修复 Mask 组件被动画编辑器修改后场景编辑器显示异常的问题
修复 Collider 组件在编辑模式中添加的点位置发生偏移的问题
修复在 Hierarchy 面板中无法将最后一个场景根节点的子节点拖到空白处的问题
修复更改节点锁定状态或者关联预制节点的时候没有场景保存提示的问题
修复在预览游戏过程中切换当前编辑场景后,预览的游戏将无法跳转回原先编辑场景的问题
修复模拟器手动刷新后会连续报错导致编辑器卡死的问题
修复动画编辑器暂停时,粒子无法正常预览的问题
修复动画编辑器节点列表可能没更新的问题
修复在动画编辑状态下修改脚本可能会导致节点错乱的问题
修复构建面板未指定默认场景时,弹出报错后将无法重新构建的问题
修复当自动图集的 pac 文件被场景直接引用后,发布工程时仍将丢失未被引用的 SpriteFrame 的问题
修复构建 OPPO 小游戏时,如果因为未设置 release 签名而报错,构建面板仍然会显示构建完成的问题
修复微信小游戏构建时如果有多个子包将出现警告的问题
修复微信小游戏主域构建时,会清空子域包的问题
修复 QQ 轻游戏构建时勾选 MD5 将会导致文件上传失败的问题
修复 QQ 轻游戏构建时屏幕朝向设置未导出的问题
修复发布 Android Instant 平台时远程服务器 ip 获取错误的问题
修复编辑器加载的脚本最外层包含 cc.game.setFrameRate 时会引起 Button 缩放失效的问题
修复在编辑器下访问 cc.systemEvent 时的报错
修复自定义 Cocos2d-x 引擎时找不到模拟器的问题
修复使用命令行构建项目时,不论是否出错,错误码始终返回 0 的问题
2. 引擎修复列表
修复节点 destroy 后,activeInHierarchy 仍为 true 的问题
修复 RenderTexture 中的 filter, premultiply alpha 设置无效的问题
修复无法加载由插件引入的场景的问题
修复 Sprite 组件使用 Filled 模式无法正确显示图集中旋转的 SpriteFrame 的问题[#3581]
修复延时加载 ttf 字体会导致加载死循环的问题
修复使用自定义 ttf 字体可能引起 FPS 波动的问题
修复延迟加载的 fnt 字体不显示的问题
修复 EditBox 键盘收起来后屏幕就无法自动适配朝向的问题
修复在透明节点上的 RichText 被重新赋值文本后会闪一下的问题
修复节点的 color 对 RichText 无效的问题
修复 LabelOutline 组件 enabled 状态修改时效果没同步变化的问题
修复 LabelOutline 设置颜色无效的问题
修复 PageView 组件位置发生偏移的问题
修复 Layout 计算 anchor 时,值有可能变为 Infinity 的问题
修复 Spine 的 Skeleton 组件勾选了预乘后导致节点 opacity 失效的问题
修复当 Spine 在 Mask 下重新加载时贴图有可能丢失的问题
修复 DragonBones 不同节点使用相同骨骼不同图集时的显示问题
修复使用了 Mask 的情况下 Spine 有可能丢失贴图导致的渲染异常
修复 Mask 在 IMAGE_STENCIL 模式下未指定 SpriteFrame 时无限报错的问题
修复 Mask 组件在编辑器中 undo 时,SpriteFrame 的改动不会更新的问题
修复场景延迟加载时,Mask 采用 IMAGE_STENCIL 模式导致的报错[#3656]
修复 MotionStreak 引起的 GL 报错
修复 Button 在 Scale 模式下会使节点的 scaleY 变成 scaleX 的问题
修复 Button 在多个状态互相叠加时可能有些状态失效的问题
修复了在 start 方法中设置 Toggle 的 isChecked 无效的问题
修复游戏暂停再继续以后,Animation 发生闪现的问题[#3584]
修复 cc.sys.getSafeAreaRect 在非 iOS 原生平台返回的设计分辨率坐标不对的问题
修复 Node 的 group 修改后立即调用 findCamera,无法获得最新结果的问题[#3642]
修复启用 MD5 后反复加载同个 Audio 时,调用栈有可能溢出的问题[#3648]
修复 Audio 多次重复加载后可能无法播放的问题[#3702]
修复 AnimationState 的参数有可能解析为字符串类型的问题
修复 MouseJoint 未能响应 touch cancel 的问题
修复预览游戏时,cc.game 的 EVENT_GAME_INITED 和 EVENT_ENGINE_INITED 事件不会触发的问题
[Wechat] 修复微信小游戏开放数据域上设置 -webkit-transform 出现的报错
[QQPlay] 修复 QQ 轻游戏不响应前后台切换事件的问题
[QQPlay] 修复 QQ 轻游戏上如果使用斜体,字体将会变得很小的问题
[Wechat] [QQPlay] 修复小游戏平台 audio setCurrentTime 之后,不触发 ended 事件的问题[#3373]
[Wechat] [QQPlay] 修复在微信小游戏、QQ 轻游戏中播放声音时,切换前后台回到游戏,声音播放的相关问题 #3688
[Web] 修复 Chrome 69、70 上半透明对象渲染后可能出现白色残影的问题[#3357]
[Web] 修复在浏览器上频繁切换横竖屏时 EditBox 可能报错的问题
[Web] 修复在浏览器上 cc.sys.platform 平台状态错误的问题
[Web] 修复在浏览器上调用 cc.view.setFrameSize 不生效的问题
[Web] 修复在安卓部分 WebView 上未启用 WebGL 导致的运行问题
[Web] 修复在 Web 平台上 Android 9 系统获取到的重力感应方向相反的问题
[Web] 完善在浏览器上的字体加载方式,修复个别 ttf 字体必须加载很久的问题[#3708]
[Native] 修复原生平台图片预乘失效的问题
[Native] 修复原生平台上 Spine 预乘效果不对的问题
[Native] 修复原生平台连接 socket.io 服务器可能会报 Bad Request 的错误
[Native] 修复 iOS 和安卓无法检测重力感应的问题
[Native] 修复 iOS 调用 cc.game.restart 重启游戏后再输入文本会崩溃的问题
[Native] 修复 Windows 原生平台上 Label 的 opacity 属性不生效的问题
[Native] 修复安卓上无法监听 onKeyUp 的问题
[Native] 修复安卓手机如果自带的 SSL 证书过期后会导致资源加载失败的问题
[Native] 修复安卓原生平台下载图片时不支持服务器重定向的问题[#1584]
[Native] 修复在 iOS 横屏模式下,EditBox 输入的内容不可见的问题
[Native] 修复 iOS9 不支持 Promise 导致的运行问题
[Native] 修复在原生平台上设置音量为 0 时,音量会变为 1 的问题[#94]
已知问题
目前 OPPO 小游戏的分包功能仍不支持
VideoPlayer 在安卓原生平台上锁屏后再进入,游戏会崩溃
VideoPlayer 在 iOS 原生平台上进入全屏后将无法返回游戏
升级指南
1. v2.0.7 升级注意事项
安卓的 NDK 版本需要升级到 r16,否则将编译失败。
2. 微信小游戏开放数据域
从 v2.0.1 开始,Cocos Creator 升级了开放数据域解决方案,请参阅[接入小游戏开放数据域]
3. v2.0 升级指南
详见[v2.0 升级指南]
4. 资源升级
从 v1.10 开始,Cocos Creator 对底层资源类型进行了重构,大多数项目不受影响,但有些项目可能会收到一些警告,详情请查阅[v1.10 资源升级指南]
后续版本预告
2.1 也将迎来升级
相比 v2.0,v2.1 的提升将主要围绕 3D 领域,我们推荐有 3D 需求的新项目升级到这个版本,并且在论坛等渠道和我们建立联系,我们负责 3D 的小伙伴将提供相关支持。由于 2.1 是一个很新的版本,我们将加快迭代频率,尽量满足开发者的需求。2.1 的下一个版本是 2.1.1,该版本将支持 3D 场景编辑、摄像机预览和材质系统,同时也会合并 2.0.7 的这些改动。
微信小游戏升级提示
根据微信团队的通知,[微信 Android 端将调整小游戏 “在屏 Canvas” 的放缩策略],在现有的 Creator 版本中,cc.view.enableRetina(true) 默认是会调用的,你无需做出任何改动,一般不会遇到适配问题。如果有需要,也可以在发布后的 main.js 中,手动修改 cc.view.enableRetina 为 false。
参考文档
以下为正文所提及到(标蓝)的参考文档汇总,复制链接在浏览器中打开,即可查看相应文档。
[发布到华为快游戏平台]
https://docs.cocos.com/creator/manual/zh/publish/publish-huawei-fast-games.html
[动态合图]
https://docs.cocos.com/creator/manual/zh/advanced-topics/dynamic-atlas.html
[服务面板]
https://docs.cocos.com/creator/manual/zh/sdk/cocos-services.html
[分包加载]
https://docs.cocos.com/creator/manual/zh/scripting/subpackage.html
[#1515]
https://github.com/cocos-creator/cocos2d-x-lite/pull/1515
[#1371]
https://github.com/cocos-creator/cocos2d-x-lite/pull/1371
[#56]
https://github.com/cocos-creator-packages/weapp-adapter/pull/56
[#3581]
https://github.com/cocos-creator/engine/pull/3581
[#3656]
https://github.com/cocos-creator/engine/pull/3656
[#3584]
https://github.com/cocos-creator/engine/pull/3584
[#3642]
https://github.com/cocos-creator/engine/pull/3642
[#3648]
https://github.com/cocos-creator/engine/pull/3648/files
[#3702]
https://github.com/cocos-creator/engine/pull/3712
[#3373]
https://github.com/cocos-creator/engine/pull/3373
[#3688]
https://github.com/cocos-creator/engine/pull/3686
[#3357]
https://github.com/cocos-creator/engine/pull/3357
[#3708]
https://github.com/cocos-creator/engine/pull/3708
[#1584]
https://github.com/cocos-creator/cocos2d-x-lite/pull/1584
[#94]
https://github.com/cocos-creator-packages/jsb-adapter/pull/94
[接入小游戏开放数据域]
http://docs.cocos.com/creator/manual/zh/publish/publish-wechatgame-sub-domain.html
[v2.0 升级指南]
http://docs.cocos.com/creator/manual/zh/release-notes/upgrade-guide-v2.0.html
[v1.10 资源升级指南]
http://docs.cocos.com/creator/manual/zh/release-notes/raw-asset-migration.html
[Android 端将调整小游戏 “在屏 Canvas” 的放缩策略]
https://developers.weixin.qq.com/community/minigame/doc/00040c9903023848e0d7bd6205a401
以上就是 Cocos Creator v2.0.7 的更新说明,各位开发者可点击文末[阅读原文]进入下载。
在产品体验过程中如有遇到技术问题,欢迎大家到 Cocos 技术社区反馈交流噢!
中文社区:https://forum.cocos.com/
Cocos Creator v2.1.0 正式发布,新增 3D 支持
使用 Cocos Creator 开发微信小游戏《2048》
喜欢就点击“好看”吧