请大家使用测试版时一定要注意备份好自己的项目!
注意:如果有自定义引擎,请先还原为编辑器内置引擎,否则版本不匹配将无法使用新版编辑器。
所有测试版相关问题请在此回帖,不要另外发帖。
最近刚刚发布的 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 的原生项目尽快更新。
以下是相对于 2.0.6 的改动说明:
What’s New
###大幅优化原生平台上的 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 版本。
优化基础渲染性能
v2.0 相比 v1.x,有一些情况引擎不会合并渲染批次,导致了 Draw Call 的增加。该版本对这些情况重新进行了优化。如之前 Color 或 Opacity 不同无法合并批次,Sliced 和非 Sliced 共用同一贴图无法合并批次,Opacity 为 0 的节点仍占用 Draw Call 的问题都得到了解决。
优化 Label 渲染性能
之前如果场景中同时存在着不少 Label 和 Button 之类的图片,并且它们相互叠加,则会打断渲染引擎的合并操作,使得 Draw Call 升高。这个问题在这个版本中得到了妥善优化。
在该版本中,如果 Label 使用的是 TTF(或系统字体),受益于增强后的 动态合图 机制,这些 Label 都将尽可能与其它纹理进行批次合并。只要满足动态合图的要求,总共就只会有一个 Draw Call。该优化只适用于不会频繁更新的 Label,因此需要手动勾选 Label 上的”Batch As Bitmap”来启用。
同时,该版本也修复了 BMFont 和其它图片打包为自动图集后,仍然无法合并 Draw Call 的问题。如果 Label 使用了 BMFont,可以尝试将 BMFont 所用的图片和在场景中与其相互打断的图片设置为同一个自动图集,就能提升渲染性能。
完整支持微信小游戏资源分包
由于微信小游戏天然适合从用户的 CDN 中远程加载资源,因此在前期的版本中 Cocos Creator 仅提供了代码分包功能,资源分包还未实现。通过近期和用户的交流,以及和 Cocos 其它内部团队的合作,这个版本正式加入了资源分包的支持,使用方法和原来的代码分包完全一致,详见 分包加载。
###增加模拟器调试功能
在项目设置 - 预览运行面板中,新增了“开启模拟器调试界面”选项和“等待调试器连接”选项。前一个选项的作用是,在模拟器预览项目时将自动打开调试窗口。后一个选项的作用是,暂停启动过程直至调试器连接完成,用于调试加载过程。
编辑器改进
- 在 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
参数
Bug Fixes
###编辑器修复列表
- 修复节点大小为 0 时,在场景编辑器中使用矩形变换工具拖动节点导致的锚点计算错误
- 修复在场景编辑器里面能选中 RichText 子节点的问题
- 修复场景编辑器中的网格背景会穿透到某些半透明图片上方,导致颜色和运行时有一些差异的问题
- 修复 Mask 组件被动画编辑器修改后场景编辑器显示异常的问题
- 修复 Collider 组件在编辑模式中添加的点位置发生偏移的问题
- 修复在 Hierarchy 面板中无法将最后一个场景根节点的子节点拖到空白处的问题
- 修复更改节点锁定状态或者关联预制节点的时候没有场景保存提示的问题
- 修复在预览游戏过程中切换当前编辑场景后,预览的游戏将无法跳转回原先编辑场景的问题
- 修复动画编辑器暂停时,粒子无法正常预览的问题
- 修复动画编辑器节点列表可能没更新的问题
- 修复构建面板未指定默认场景时,弹出报错后将无法重新构建的问题
- 修复当自动图集的 pac 文件被场景直接引用后,发布工程时仍将丢失未被引用的 SpriteFrame 的问题
- 修复构建 OPPO 小游戏时,如果因为未设置 release 签名而报错,构建面板仍然会显示构建完成的问题
- 修复微信小游戏构建时如果有多个子包将出现警告的问题
- 修复微信小游戏主域构建时,会清空子域包的问题
- 修复 QQ 轻游戏构建时勾选 MD5 将会导致文件上传失败的问题
- 修复 QQ 轻游戏构建时屏幕朝向设置未导出的问题
- 修复发布 Android Instant 平台时远程服务器 ip 获取错误的问题
- 修复编辑器加载的脚本最外层包含
cc.game.setFrameRate
时会引起 Button 缩放失效的问题 - 修复在编辑器下访问
cc.systemEvent
时的报错 - 修复自定义 Cocos2d-x 引擎时找不到模拟器的问题
- 修复使用命令行构建项目时,不论是否出错,错误码始终返回 0 的问题
引擎修复列表
- 修复节点
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 模式导致的报错 #3656
- 修复 MotionStreak 引起的 GL 报错
- 修复 Button 在 Scale 模式下会使节点的 scaleY 变成 scaleX 的问题
- 修复 Button 在多个状态互相叠加时可能有些状态失效的问题
- 修复了在 start 方法中设置 Toggle 的
isChecked
无效的问题 - 修复游戏暂停再继续以后,Animation 发生闪现的问题 #3584
- 修复 cc.sys.getSafeAreaRect 在非 iOS 原生平台返回的设计分辨率坐标不对的问题
- 修复 Node 的
group
修改后立即调用findCamera
,无法获得最新结果的问题 #3642 - 修复启用 MD5 后反复加载同个 Audio 时,调用栈有可能溢出的问题 #3648
- 修复 AnimationState 的参数有可能解析为字符串类型的问题
- 修复 MouseJoint 未能响应 touch cancel 的问题
- [Wechat] 修复微信小游戏开放数据域上设置
-webkit-transform
出现的报错 - [QQPlay] 修复 QQ 轻游戏不响应前后台切换事件的问题
- [QQPlay] 修复 QQ 轻游戏上如果使用斜体,字体将会变得很小的问题
- [QQPlay] 修复 QQ 轻游戏在锁屏重新进入或前后台切换时,声音无法重新播放的问题
- [Wechat] [QQPlay] 修复小游戏平台 audio
setCurrentTime
之后,不触发ended
事件的问题 #3373 - [Web] 修复 Chrome 69、70 上半透明对象渲染后可能出现白色残影的问题 #3357
- [Web] 修复在浏览器上频繁切换横竖屏时 EditBox 可能报错的问题
- [Web] 修复在浏览器上 cc.sys.platform 平台状态错误的问题
- [Web] 修复在安卓部分 WebView 上未启用 WebGL 导致的运行问题
- [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
MIGRATION GUIDE
v2.0.7 升级注意事项
安卓的 NDK 版本需要升级到 r16,否则将编译失败。
微信小游戏开放数据域
从 v2.0.1 开始,Cocos Creator 升级了开放数据域解决方案,请参阅 接入小游戏开放数据域。
v2.0 升级指南
详见 v2.0 升级指南。
资源升级
从 v1.10 开始,Cocos Creator 对底层资源类型进行了重构,大多数项目不受影响,但有些项目可能会收到一些警告,详情请查阅 v1.10 资源升级指南。
下载链接
v2.0.7-beta.4 修正版(Windows 版 | Mac 版)
修复原生平台图片预乘失效的问题
重新加回了 beta.3 修正版中临时剔除的 Cocos Services 模块,并且默认放到了属性检查器右侧
v2.0.7-beta.3 修正版(Windows 版 | Mac 版)
- 新增 CC_RUNTIME 预定义宏,在 OPPO、vivo 小游戏上 CC_RUNTIME 将为 true,CC_JSB 将为 false
- 修复在 Web 平台播放视频时报“Document not active”的错误
- 修复 Mask 在 IMAGE_STENCIL 模式下未指定 SpriteFrame 时无限报错的问题
- 修复 Mask 组件在编辑器中 undo 时,SpriteFrame 的改动不会更新的问题
- 修复原生平台上 Spine 预乘效果不对的问题
此外还修复了以下 2.0.7 的新增问题:
- 修复移动端原生平台模块剔除未生效的问题
- 完善各 runtime 平台构建流程
- 修复子包构建时未清空旧资源的问题
- 修复 studio 和 ccb 工程导入报错的问题
- 修复 runtime 平台 __getCurrentLanguageCode 接口调用
- 修复 android instant 平台编译失败的问题
- 修复安卓平台 WebView 显示异常的问题
- 修复 iOS 9 arraybuffer 引起的崩溃问题
v2.0.7-beta.2(Windows 版 | Mac 版)
- 增加微信小游戏资源分包支持
- 修复在微信小游戏、QQ 轻游戏中播放短音效时,切换前后台回到游戏,音效会被重播的问题 #3688
- 修复模拟器手动刷新后会连续报错导致编辑器卡死的问题
- 在编辑器中添加了 Label 的 batchAsBitmap 属性
- 在安卓暂停游戏时,使用标准方法来保留 gl context
此外还修复了以下 2.0.7 的新增问题:
- 修复了 beta.1 子包构建可能报错的问题
- 修复 web 平台 editbox 调用 cc.Scene.exitFullScreen 没传入 element 引发的报错
- 修复 DOM 节点在编辑器下不能同步 editBox 变换的 bug
- 修复节点动态创建时,未及时更新摄像机相关配置,导致渲染异常的问题
- 移除编辑器自带的 AnySDK 支持,改由服务面板提供
该版本已知问题:
- 该 beta 版本原生平台上会报错,需要下个版本修复
- 在桌面 Chrome 端,Label 的 drawcall 优化会被禁用
v2.0.7-alpha.6(Windows 版 | Mac 版)
- 添加了
cc.sys.languageCode
属性,用于获取完整的系统语言信息,以便区分某些语言的不同方言(subtag)。返回值是一个字符串,例如"zh-tw", "en", "en-us", "fr", "fr-fr", "es-es"
。
此外还修复了以下 2.0.7 的新增问题:
- 修复 Mask 节点报 _calDynamicAtlas 未定义的错误
- 重新修复了 RichText 未使用节点颜色作为默认颜色的问题。
v2.0.7-alpha.5(Windows 版 | Mac 版)
- 优化基础渲染性能(详见上面完整介绍)
- 优化 Label 渲染性能(详见上面完整介绍)
- 集成了 MatchVS 新建工程模板
此外还修复了以下 2.0.7 的新增问题:
- 修复游戏暂停时 Spine 渲染错误的问题
v2.0.7-alpha.4(Windows 版 | Mac 版)
- 编辑器加载自定义引擎时,如果无法成功则自动回退到内置引擎
此外还修复了以下 2.0.7 的新增问题:
- 修复模拟器预览问题
- 修复启动编辑器时,可能会无法打开项目,提示“Please specify the jsbAdapter path”的问题
v2.0.7-alpha.3(Windows 版 | Mac 版)
- 支持在原生平台上加载远程音频 #82
- 修复编辑器加载的脚本最外层包含
cc.game.setFrameRate
时会引起 Button 缩放失效的问题 - 修复自定义 Cocos2d-x 引擎时找不到模拟器的问题
- 修复场景延迟加载时,Mask 采用 IMAGE_STENCIL 模式导致的报错 #3656
- 修复 Button 在 Scale 模式下会使节点的 scaleY 变成 scaleX 的问题
- 修复 Node 的
group
修改后立即调用findCamera
,无法获得最新结果的问题 - 修复启用 MD5 后反复加载同个 Audio 时,调用栈有可能溢出的问题 #3648
- 修复在编辑器下访问
cc.systemEvent
时的报错
此外还修复了以下 2.0.7 的新增问题:
- 修复win32平台release模式编译报错
- 修复 dragonbones 在原生平台的抖动问题
此外该版本还提取了 v2.1.0 中除了 3D、纹理压缩、自动图集改进和渲染性能优化以外的全部改动。
(2.1.0 中的渲染性能优化将在下个测试版本加入)
v2.0.7-alpha.2(Windows 版 | Mac 版)
良好的品质离不开细心的打磨,非常感谢各位开发者通过社区、GitHub、Cocos 技术服务等渠道反馈的意见。相关问题请反馈到本帖下!
版本测试流程:alpha => beta => rc => 正式版
alpha: 开发过程中的技术预览版,功能还在开发当中,只经过冒烟测试,未经测试团队验证
beta: 功能接近完整的测试版
rc: 发行候选版本,原则上避免进行任何改动。如果用户没反馈什么大的问题,将直接修改文件名作为正式版