注意:
- 和所有软件一样,Cocos Creator 工程可以升级,原则上无法降级。也就是说旧版编辑器不能打开新版编辑器保存的工程,所以请大家使用测试版时 提前备份好自己的项目 ,以免无法回退!
- 如果有自定义引擎,请先还原为编辑器内置引擎,否则版本不匹配将无法使用新版编辑器。
所有测试版相关问题请在此回帖,不要另外发帖。本帖仅讨论新版相关问题,旧版本的问题请单独发贴。
本次发布的 2.0.9 版本新增了百度小游戏平台的支持,并且大幅优化了 DragonBones/Spine 在小游戏和 Web 平台上的性能。同时,我们进一步完善了引擎和编辑器的兼容性、稳定性,让大家能够获得更好的开发体验。良好的品质离不开细心的打磨,非常感谢各位开发者通过社区、GitHub、Cocos 技术服务等渠道反馈的意见。
以下是相对于 2.0.8 的改动说明:
#What’s New
##支持发布到百度小游戏平台
Cocos Creator 正式支持了发布到百度小游戏,详细用法请查阅 发布到百度小游戏平台。
##提供极速模式,大幅改善 DragonBones 和 Spine 在小游戏和 Web 平台上的性能。
Dragonbones 参考文档: https://docs.cocos.com/creator/manual/zh/components/dragonbones.html
Spine 参考文档: https://docs.cocos.com/creator/manual/zh/components/spine.html
以下是性能测试结果:
测试的分值根据帧率换算而来,值越高性能越好。
以下是内存测试结果:
测试的分值越低表示内存占用越少。
还需要注意的是,极速模式,不支持动作融合,只支持动作开始和结束事件,适用于特效,npc 动画等。当场景中使用大量相同骨骼动画时,内存的改善会比较明显。
##提升微信小游戏运行性能
###优化了微信小游戏的资源加载速度
针对微信小游戏缓存资源耗时较长的问题,我们调整了资源缓存策略,将耗时较长的缓存操作自动延后(#72),缩短了资源加载所需的等待时间。
###大幅优化动态文本刷新性能
微信小游戏 7.0.3 版本开始,底层 texImage2D
调用耗时过长,导致 Label 渲染系统字体或 ttf 字体时,一旦文字内容发生改变就会影响性能。针对这个问题,我们在 Label 组件上新增了一个 Cache Mode 选项,开发者可设为 CHAR 模式进行优化。Cache Mode 可设置的值有:
- NONE:默认值,Label 中的整段文本将生成一张位图。
- BITMAP:选择后,Label 中的整段文本仍将生成一张位图,但是会尽量参与 动态合图。
只要满足动态合图的要求,就会和动态合图中的其它 Sprite 或者 Label 合并 Draw Call。由于动态合图会占用更多内存,该模式只能用于文本不常更新的 Label。
(该选项取代了原先的 Batch As Bitmap,旧项目如启用了 Batch As Bitmap 将自动升级为该选项) - CHAR:选择后,原理类似 BMFont,Label 将以“字”为单位将文本缓存到全局共享的位图中,相同字体样式和字号的每个字符将在全局共享一份缓存。能支持文本的频繁修改,对性能和内存最友好。
不过目前该模式还存在如下限制,我们将在后续的版本中进行优化:- 该模式只能用于字体样式和字号固定,并且不会频繁出现巨量未使用过的字符的 Label。这是为了节约缓存,因为全局共享的位图尺寸为 2048*2048,并且不做清除操作,当位图被占满后新出现的字符将无法渲染。
- Overflow 不支持 SHRINK
- 不能参与动态合图(同样启用 CHAR 模式的多个 Label 在渲染顺序不被打断的情况下仍然能合并 Draw Call)
注:以上 Cache Mode 仅对系统字体或 ttf 字体有优化效果,而且这些优化对其它平台也有很好的效果。
##支持发布为 Android App Bundle
Cocos Creator 支持将安卓原生游戏发布为 App Bundle。将 App Bundle 提交到 Google Play 后,Google Play 将会根据玩家手机参数的差异,动态下载不同版本的 APK,达到减少游戏的包体的目的。详细用法请参考 TODO。
#编辑器改进
-
在属性检查器中禁止设置节点宽高为负数
-
在资源管理器中添加排序方式切换按钮,可选择按照名称或类型进行排序
-
添加层级管理器的搜索清空按钮,清空后将跳转到之前选中的节点
-
在层级管理器的下拉搜索框中添加通过 UUID 查找资源被引用情况的功能
-
同步层级管理器和动画编辑器中的节点选中状态
-
将默认停靠在属性检查器旁边的服务面板移动到构建发布窗口中
-
完善粒子系统导入导出 plist 的支持
-
构建项目时在系统任务栏中显示进度条
-
重复导入 CCB 和 Cocos Studio 工程时将会覆盖原来的文件夹,不再保留多份
#引擎改进 -
优化了微信小游戏的资源加载速度 #72
-
增加
jsb.copyTextToClipboard
API,用于拷贝文本到剪贴板 -
原生平台的模块裁剪不再剔除 XMLHttpRequest 模块
-
升级 Android 构建工具配置 Gradle 至 4.10.3,plugin 至 3.2
-
在 Android 8 中默认支持 http 协议 #1664
-
升级 Spine 运行库到 3.6
-
完善 VideoPlayer 组件在 X5 浏览器上的支持
-
引入了全新的缓动 API:
cc.tween
,能提供更简洁的语法和更高的灵活性,详见 xxx
#Bug Fixes
##编辑器修复列表 -
修复动画编辑器无法使用在用户脚本上的问题
-
修复自动图集不能打包到子包的问题
-
修复命令行构建项目时,项目会直接生成到 build 目录下的问题
-
修复命令行构建项目时不加载自定义插件的问题
-
修复命令行构建项目时 excludeScenes 参数不生效的问题
-
修复场景编辑器中的网格背景会穿透到某些半透明图片上方,导致颜色和运行时有一些差异的问题
-
修复自动同步的 Prefab 在保存场景时个别情况下会提示无法保存引用的问题
-
修复自定义构建插件在 “build-finished” 阶段获取 BuiltResults 中的子包资源时,资源所在的 nativePath 不正确的问题
##引擎修复列表 -
修复场景显示对象非常多时会出现渲染错误的问题
-
修复 Button 组件设置为 COLOR 模式后,所在节点颜色不生效的问题
-
修复在
onLoad
之前设置 Button 的interactable
为 false 会导致节点 scale 变为 0 的问题 -
修复 Label 组件未激活就销毁时的报错
-
修复 Label 在搭配 faceIn action 使用时可能会闪现的问题
-
修复对 Particle 应用 action 会导致粒子发生偏移的问题
-
修复 Particle 组件会重复解析 plist 中内嵌的 textureData 的问题
-
修复加载 1.x 旧项目时会丢失场景中的部分 Particle 自定义数据的问题 #3885
-
修复 ScrollView 的父节点 scale 为 0 时 ScrollView 布局异常的问题
-
修复 DragonBones 如果包含声音文件,播放动画会报错的问题
-
修复 DragonBones 骨骼包含多张纹理时,可能无法渲染的问题
-
修复 DragonBones 的缓存上限未生效,导致缓存不会自动清空的问题
-
修复 Mask 组件启用
inverted
后未更新点选检测(hit test)的问题 -
修复调整节点
zIndex
后点选检测(hit test)区域可能未刷新的问题 #3895 -
修复在微信小游戏子域中的某些场景中的字段会受到 MD5 干扰的问题
-
修复原生平台上 WebSocket GC 时的潜在崩溃问题 #1681
-
修复原生平台 Spine 切换父节点后会导致闪退和渲染异常的问题 #1659
-
修复 iOS 原生平台 cc.log 的过程中可能会崩溃的问题 #1687
-
修复 Android 平台上 XMLHTTPRequest 获取不到 statusText 时引发的崩溃问题 #1629
-
修复 Android 无法播放远程视频的问题 #1661
-
修复原生和 Web 平台无法加载分包中的资源的问题
-
修复 Vec3 和 Rect 反序列化结果可能不正确的问题
#Known Issues -
目前在百度小游戏平台上,还存在一些问题,我们正在尽快配合百度进行修复。
- 安卓上存在音频兼容性问题(预计手机百度 11.6 版本修复)
- iOS 上重力感应方向变反
- XMLHttpRequest 不支持 timeout 回调
- 安卓上远程加载资源会报错
v2.0.9-rc.5(Windows 版 | Mac 版)
- 将 Android 最低的 Target/Compile SDK Version 从 16 升级至 23,Min SDK Version 仍然是 16
以下修复的是 2.0.9 测试版的新增问题:
- 修复了深色文本缩放后可能会模糊的问题
- 修复 QQ 玩一玩文本渲染异常的问题
- 修复原生平台 WebView 失效问题
- 修复原生平台 NDK 版本兼容性问题
v2.0.9-rc.4(Windows 版 | Mac 版)
构建微信小游戏时,默认关闭微信开发者工具的代码混淆功能,采用 Creator 自带的混淆功能
修复自定义引擎时,项目构建可能出现的无效报错
调整代码自动编译策略,防止插件在修改项目脚本时导入失败
在 RigidBody 组件上添加 Awake On Load 属性,用来设置刚体是否默认唤醒,默认为 True
以下修复的是 2.0.9 测试版的新增问题:
修复新建场景或 Prefab 时的报错
修复 Label 组件的相关报错
修复spine动画第一帧渲染不正确的问题
v2.0.9-rc.2(Windows 版 | Mac 版)
修复加载 1.x 旧项目时会丢失 Spine 的 premultipliedAlpha 设置的问题
新增 Label 的 cacheMode
选项,可设置值为 BITMAP
或者 CHAR
,BITMAP 相当于原有的 batchAsBitmap
,CHAR
则提供了更高的渲染性能,但是目前不支持 SHRINK 字号。
不在 Chrome 69 以上版本中禁用动态图集
以下修复的是 2.0.9 测试版的新增问题:
重新修复加载 1.x 旧项目时会丢失场景中的部分 Particle 自定义数据的问题
修复 Label 的锯齿、下划线颜色有关问题
修复 Button 缩放相关问题
v2.0.9-beta.4(Windows 版 | Mac 版)
修复更改节点层级关系后 Physics Collider 的 Gizmo 显示异常的问题
移除除了 Sprite 和 Particle 以外的其它渲染组件上的 Blend Factor 属性
修复不同 shader 使用同一个 uniform 名称,但是类型不同时获取数据不对的问题
修复 iOS 原生平台 cc.log 的过程中可能会崩溃的问题 #1687
以下修复的是 2.0.9 测试版的新增问题:
支持百度小游戏 1.4.1 基础库
修复属性检查器不显示 Label Component 的问题
修复动态加载的 DragonBones 不渲染的问题
修复百度开放域 canvas 渲染 label 默认为白色的问题
修复原生平台上释放 DragonBones 资源时,会抛出异常的问题
v2.0.9-beta.3(Windows 版 | Mac 版)
良好的品质离不开细心的打磨,非常感谢各位开发者通过社区、GitHub、Cocos 技术服务等渠道反馈的意见。相关问题请反馈到本帖下!本帖仅讨论新版相关问题,旧版本的问题请单独发贴。
版本测试流程:alpha => beta => rc => 正式版
alpha: 开发过程中的技术预览版,功能还在开发当中,只经过冒烟测试,未经测试团队验证
beta: 功能接近完整的测试版
rc: 发行候选版本,原则上避免进行任何改动。如果用户没反馈什么大的问题,将直接修改文件名作为正式版