昨晚有观看直播的水友应该知道,Cocos Creator v1.6正式版将于下周发布。这个被开发者号称为「Creator引擎上线以来最值得期待的大版本」历经多次修复后,虽然还未上线,却已笼络了一大波开发者的心。
友情提醒:
请大家使用测试版时一定要注意备份好自己的项目!
Cocos Creator v1.6.0 最后最新最全内测版发布:
http://forum.cocos.com/t/cocos-creator-v1-6-0/48681
在下周发布前,
两位主播 panda 和 youyou 老师提前给大家讲解了 1.6 版本的各项新功能和进化。
在 Creator 的发展历程中,性能优化一直是不变的工作重心,从加载性能、反序列化性能、到渲染性能,我们一直在做各个方面的优化工作。
这次在 1.6 中,我们又给大家带来了 Spidermonkey v52 版本的升级,使得 Android 平台 Native 环境中的 JS 运算性能得到了大幅度的提升,弥补了 Native 平台上 JS 引擎与当前最新版本浏览器之间的性能差距。从 panda 分享的数据中可以看出,在 Android 平台上,JS 运算和游戏运行效率都得到了明显的提升,其中各个 JS 运算库的性能测试都得到了近 20 倍的性能提升。
值得一提的是,由于 iOS 平台禁用了 JIT(Just-In-Time Compiler),而现代 JS 引擎的优化都集中在 JIT 层面,所以 1.6 版本对于 iOS 平台并没有明显的性能提升。好在我们升级 Spidermonkey 的过程中,还将所有的绑定代码重新审核了一遍,从框架层面重新加固了,所以 1.6 的 Native 平台稳定性比 1.5 有了很大的进步。
除此之外,我们对 Spidermonkey v52 版本开启了 Generational GC,消灭了垃圾回收机制的卡顿。还开启了 JS 层报错时的调用栈输出,使得原生平台调试更加方便。
在过去的版本中,在代码编辑器中编辑完代码后回到编辑器,总会卡一下,如果项目代码量很大,甚至会卡顿 30 秒以上,这种体验被很多开发者所诟病。
在 1.6 中,youyou 老师破除万难终于解决了这个问题,新版本当用户修改完代码后,回到编辑器只会重新编译被修改的代码,几乎感受不到任何卡顿。youyou 老师也解释了,这是因为浏览器和模拟器预览模式中,从使用一个 bundle.js 改为了使用分散的脚本文件,这会带来预览模式下调试的变化。比如搜索脚本会搜索到两份,编译后的文件和原始的用户文件,只要在你熟悉的用户版本中下断点就可以了。
在 1.6 中,用户呼声很高的另一个功能也得以实现,那就是多选节点的情况下进行批量修改。开发者可以批量修改 Node 的基本属性,比如位移,旋转,缩放,颜色等,也可以修改多节点共享的组件属性,比如所有选中节点都拥有 Sprite 的话,那么你就可以批量修改 Sprite 的属性了。
选中多个节点之后,在 inspector 中,大家将可以看到一些属性值显示为 "-",这表示不同节点的值不同,你可以修改成完全一样的属性值。也有一些属性值显示为 "Difference",这些是我们目前不支持批量修改的属性。当然,我们的批量修改也支持 undo / redo 操作,不必担心误操作带来什么严重的后果。
这个新功能是为了让开发者可以做到更方便的版本更新,在构建 web 版本的过程中,所有的资源文件名都会被附加上根据 md5 计算出的 hash 短字符串,这样开发者更新了资源,打包后的文件名也自然会变化,同时 settings.js 中会保存当前最新版本的资源文件名。这样就可以做到服务端更新之后,所有用户都可以立即获取完整的新版本,不受 CDN 和浏览器本地缓存的影响,可以说解决了运营过程中的一大问题。不过这个功能还有一点小问题,就是脚本文件目前还没有添加 md5 文件名,这将会在 1.6.1 中得到修复。
由于之前的版本中很多用户抱怨 Native 的 WebSocket 连接经常在 iOS 上出现很多意外情况,比如在网络状态变化时断连,接电话时断连,在锁屏时无法得到通知等。我们研究后发现这是由于 libwebsocket 库在 iOS 平台的实现导致的,所以决定将 iOS 平台的 WebSocket 库修改为 Facebook 的开源库 SocketRocket,它带来了主要好处有:
- 网络状态变化不会导致断连
- 锁屏会触发错误消息
- 不依赖于 lib openssl(包体比较大)
- wss 链接不需要提供 CA root certificate