CocosCreatorv1.6发布啦!感谢社区在此版本漫长的测试周期中的耐心等待,以及对内测版的积极试用和反馈。我们在本次版本更新中继续保持着优化性能和提升体验的传统,而这个版本也是一系列重要引擎演进的开端。我们希望在提升开发者编辑体验的同时,不断提升JS和C++引擎的性能,解决开发者最关心的包体、缓存、网络通信等问题。基于这个目标,我们在v1.6版本中增加了以下重要功能。特色功能-JavaScript-Binding绑定层升级,大幅提升Android平台性能-预览游戏时免脚本打包,更改脚本后立即刷新游戏-批量编辑节点和组件属性-自动添加版本web平台搭建时的资源文件名-升级iOS平台的WebSocket库,解决大部分平台特有的网络通信问题。JavaScript-Binding绑定层全面升级。在这个版本中,我们将中间层从JavaScript脚本升级为原生平台C++绑定。使用的JavaScript引擎SpiderMonkey从v33版本升级到v52版本,大大提升了JavaScript在Android平台上的运行性能(效果不明显,iOS平台不支持JIT);另一方面,我们在这个版本开始绑定,目标是:-提供完全抽象的JSB绑定层API,独立于JavaScript引擎,用户的绑定代码将不再受未来JS引擎升级的影响-支持平台原生JS引擎,包括Android平台v8,iOS平台JavaScriptCore。升级绑定层后,我们不仅为后续开发者的C++层绑定开发提供了一个稳定的环境,而且支持原生平台的JS引擎在构建原生版本时会大大减少包体积,因为不再需要将SpiderMonkey引擎库添加到版本中。预览游戏时免费脚本打包由于需要脚本模块化加载,我们从第一版CocosCreator开始就对用户脚本进行了编译打包,但是对于上百个脚本的大型项目,每次修改任意一个脚本都会触发整个编译打包过程,会使得修改脚本后的等待时间很长。为了解决这个问题,我们从v1.6开始在编辑器环境中引入了无脚本模块化系统,可以在预览环境中单独加载单个文件的脚本。对任何脚本的改动只会触发脚本本身的编译过程,从而将开发脚本后刷新预览的周期缩短到1~2秒,大大提高了开发效率。目前构建的脚本还需要打包,因为终端浏览器中没有对应的加载环境。我们将继续研究在构建和发布时能够保持每个脚本文件独立存在的构建模式,让需要单独更新脚本的开发者可以更轻松地部署游戏版本。批量编辑节点和组件属性在编辑UI场景时,经常会遇到需要选中一些节点,批量修改其部分属性的情况。在这个版本中,我们增加了属性检查器的批量编辑功能。选择多个节点后,可以批量编辑这些节点上的共享组件和属性。当不同节点的某个属性值不同时,选中这些节点后,属性检查器上的属性值会显示为-,修改该属性该属性会在所有选中的节点上变为相同的值。web平台搭建时在资源文件名中加入版本号,对于H5游戏开发者有效利用浏览器的缓存机制,避免用户重复下载资源,保证更新游戏时缓存的资源版本更新非常重要资源。我们在该版本的构建发布面板中添加了**md5缓存**构建选项。勾选后,构建时会在所有资源文件名中加上该文件的md5码。这样在更新游戏版本时,根据不同的文件名,用户的浏览器会自动重新下载被md5更改过的资源,在保证版本一致性的同时最大限度的利用缓存节省流量。在iOS平台上,使用SocketRocket代替了之前的WebSocket实现。我们使用facebook开发的[SocketRocket库](https://github.com/facebook/socketrocket)来替代之前在cocos2d-x和CocosCreatorC++引擎中使用的libWebsocket库,这个新的实现支持以下特性:-SocketRocket提供了一个异步API,更符合通信习惯-封装了跨线程通信-网络状态变化时不会关闭连接-锁定移动设备的屏幕不会再报错-不再依赖包体更大的openssl库-使用wss连接时不再需要本地CA根证书在后续版本中,我们会进一步优化socket.io的原生实现,希望能为开发者提供具有简单稳定的网络通信编程环境。完整变更列表-[Audio][Breaking]修复`audioEngine.stop`会触发finish事件回调的问题,现在setFinishCallback设置的回调仅在自然播放模式结束时,VSCode中的调试配置免编译模式需要通过开发者菜单更新-[编辑器]移除内置代码编辑器,默认情况下,当您双击文本文件时,将使用系统默认应用程序打开它-[编辑器]修复Windows下编辑器运行路径驱动与项目路径不一致时脚本加载路径错误-[Editor]修复导出场景资源时引用过多可能导致卡死的问题-[Editor]修复需要第三方库路径时出现“找不到模块”错误:undefined`-[Editor]为editor-input和editor-textarea控件添加maxLength支持-[Editor]禁用某些核心面板的弹出和关闭,包括场景编辑器,资源管理器和节点树。-[Editor]修复了TS脚本重命名后,旧的不会被删除,导致脚本名称重复的问题。-[Editor]修复保存场景时“Cannotreadproperty'_prefab'ofnull”的错误-[Editor]修复新版VSCode属性装饰器报错-[Editor]修复`too'当有toomanyscriptsintheprojectmanyopenfiles问题`-[Editor]修复资源依赖的rawasset在编辑器中无法通过url加载的问题,修复编辑器无法正确加载资源的问题TSX资源-[Editor]修复脚本文件在编辑器中加载顺序不固定的问题-[Editor]修复切换场景编辑模式时“PossibleEventEmittermemoryleakdetected”的错误-[Editor]修复创建ToggleGroup报错-[Editor]修复SpriteEditor可能会卡住窗口的问题-[Build]增加构建web终端时插入eruda的选项-[Build]修复使用md5缓存报错的问题在风中构建网络时出错ows平台。-[构建]构建时压缩合并资源uuid,优化settings.js资源索引文件的大??小。-[Build]修复部分项目在构建-raw-assets时会卡住的问题-[Build]修复构建非调试版本时settings.js未压缩的问题-[Build]修复构建时添加md5缓存部分组件无法正确获取资源引用的问题-[Build]修复构建Android时每次都会重新编译的问题-[Build]修复使用md5缓存时TTF标签无法正确下载资源和加载字体的bug-[Build]修复低版本Xcode编译iOS/Mac项目时可能遇到的`undefinedsymbol:NSStreamNetworkServiceTypeCallSignaling`编译失败问题-[Build]webbuild面板增加md5Cache选项,资源增加md5编码文件名更新客户端正确结束资源缓存。-[Build]修复了粒子系统plist所在目录下的所有贴图在构建项目时会被强制导出的问题。修复粒子plist中引用的资源uuid与构建项目后压缩后的uuid不一致的问题。-[AnySDK]支持在构建时动态添加AnySDK依赖,默认构建的工程不包含AnySDK代码。-[ProjectSettings]引擎模块选择界面增加全选选项-[Preferences]首选项面板增加tooltip-[AssetDB]修复jpg格式贴图资源无法删除或重命名的问题-[Properties]修复componentpropertytobechangedfromanarraytype当返回普通类型时,propertyinspector不会自动重置和刷新问题-[Properties]修复event-prop不能指定tooltip的问题-[Properties]修复预览的问题属性检查器上的Markdown文件-[属性]允许选中多个节点后,在属性检查器中批量修改属性-[属性]修复脚本中数据结构中继续嵌套数组后无法显示数组的问题-[Properties]修复Properties查询超时后,面板停止更新节点状态直到re-c后重新开始更新的问题舔节点-【属性】修复点击组件脚本资源栏无法跳转到脚本资源所在位置的问题-【TypeScript】升级内置typescript编译器至2.4版本-【商店】完善下载扩展商店体验,增加安装失败和解压失败时的提示,并使用扩展包名作为下载压缩包的文件名。-[商店]插件商店的产品描述支持markdown格式-[商店]改善扩展商店的体验-修复重复下载文件时报错的问题-加快删除文件夹的速度(Utils.有延迟,只需要删除watch文件夹即可)-安装失败后会提示复制到某个文件夹,自动打开这个文件夹-将Editor.error改为Editor.warn-添加安装完成后提示-统一打印错误信息,出错时会显示warn-允许同时安装多个插件引擎-[Engine]添加`Node.insertChild`接口,用于将节点插入到某个级别下的特定位置。-[Engine]使用SocketRocket第三方库替代iOS上原有的WebSocket实现-SocketRocket提供异步API,更符合通信习惯-封装跨线程通信-网络状态时不会关闭连接改动-移动设备锁屏不再报错-不再依赖大包的openssl库-使用wss连接时不再需要本地CA根证书-[Engine]修复会报错的问题`evalstring`调用的方法的返回类型为void时发生-[Engine]修复Spidermonkeyv52在iOS模拟器上创建TypedArray时崩溃的问题-[Engine]修复loadResDir加载的资源排序不稳定的问题-[Engine]修复勾选场景时Mask的IMAGE_STENCIL模式失败延迟加载资源-[Engine]支持在项目中使用CC_BUILD和CC_DEBUG预编译宏-[Engine]修复Mask的节点setContentSize没有生效的问题-[Engine]修复jsb在TypeScript中使用promise不兼容的问题-[Engine]修复WebSocket.close和收到onerror后发送onclose事件的潜在crash-[Engine]去掉ZipUtils和TiledMap相关模块在引擎裁剪后留在包体中(减少核心包大小)-[Engine]为SGLabel添加对象池,减少内存开销,提高反序列化效率。-[Engine]修复DebugInfos不包含在jsb问题中-[Engine]修复directoreventbeforeupdatemissing问题(用户报告的问题)-[Engine]增加默认最大批处理顶点数(改进)-[Engine]修复`cc.game.restart()`调用会导致崩溃-[Engine]只在预览和调试模式下获取webgl错误,减少发布版本的性能损失-[Engine]修复`color.fromHEX`输出颜色值的问题不正确-[Engine]修复组件有多个schedule时unschedule可能出错的问题-[Engine]修复XMLHttpRequesttimeout无法设置的问题-[Engine]修复粒子和拖尾效果的z值为incorrect-[Engine]游戏预览添加更多切换场景时的调试信息,包括场景资源uuid和每一步初始化所需的时间-[Engine]创建新的Label渲染对象时,使用对象池而不是new-[Engine]修复在原生平台使用LabelOutline时退出游戏会导致崩溃的问题-[Engine]web端和原生统一scheduler参数签名,必须使用6个参数或4个参数才能正常工作。-[Engine]修复编辑器加载粒子资源报错问题-[Engine]修复`cc.game.restart`导致web平台崩溃的问题-[Engine]升级了`gulp-uglify版本`编译引擎时,如果使用自己定制的引擎,需要同步引擎repo的`package.json`,重新安装***依赖。-[Engine]修复tint动作同时改变alpha,导致sgNode同步color到Node的过程中传递的color.a不等于255报错的问题-[Audio]修复IE11部分版本加载音频时某些情况下设置currentTime会报错-[Audio]修复加载声音操作时初始化AudioSource时声音播放可能停止的问题-[Audio]修复设置音量为0无效的问题-[音频]修复多个音轨同时播放频繁调用`_play2d(AudioCache*cache,intaudioID)`时崩溃。-[Audio]修复audioDOM模式在构建时执行md5缓存后找不到资源的问题-[Render]默认关闭脏矩形渲染优化,可通过设置cc.renderer.enableDirtyRegion开启(真的)。-[Action]解决ActionManager在更新过程中删除action导致的错误,包括:salvagedstate被移除后,正在执行的action没有保护(可能被移除);在action被移除(放入对象池)后,它可能会立即被重用,从而导致ActionManager中出现状态问题。-[Action]修复当callFunc的target为null或undefined时,jsb::Object仍然会去bindproxy报错的问题。-[Action]修复创建带有基本数据类型参数的callFunc崩溃-[JSB]改进setTimeout,setInterval实现组件-[Label]优化BMFont解析速度。目前BMFont解析在编辑器导入时直接完成,不需要运行时解析。-[Label]将`setFontFileOrFamily`拆分为`setFontFamily`和`setFontAsset`-[Label]提高创建TTF字体的效率-[BMFont]改进具有多个纹理的BMFont资源,索引纹理时路径可能太长错误-[BMFont]修复在原本使用位图字体的组件上点击useSystemFont,导致出现2个Labels的问题-[RichText]修复RichText组件或节点禁用时没有未注册的点击事件的问题-[PageView]增加新的AttributepageTurningSpeed-【Spine】支持Spine多骨骼间批量渲染-【Spine】修复Spine原生平台使用addAnimation后动画可能无法正常播放的问题-【Tiledmap】修复原生平台使用getPropertiesForGID时TiledMap,如果Antile没有设置自定义属性会报错-[Tiledmap]修复Tilemap不能被相机正确剔除的问题-[Tiledmap]添加到相机时,退出场景时,相机无法清除Tiledmap的sgNode-[Tiledmap]EnableDepthTest使tiledmapZ轴生效-[Animation]修复修改sample属性时报错-[Animation]优化帧动画性能-[Component]修复包含渲染组件的节点添加SpriteDistortion组件报错-[Component]添加cc.BlockInputEvents组件,方便阻塞UI事件-[Particle]修复资源无法导出的bug粒子文件为空-[Particle]修复endColorVar属性显示丢失的问题-[Physics]修复使用Joint时调用destroy方法导致的问题-[Physics]为PhysicsManager添加`enabledAccumulator`选项提供固体Timedphysicsupdate-[Physics]默认情况下,添加多边形碰撞器时,会自动识别图像生成顶点。如果用户需要,可以点击按钮生成顶点-[VideoPlayer]修复VideoPlayer在构建时执行md5缓存后找不到资源问题,强烈建议大家下载升级v1.6版本。解决了Creator用户一直急需但尚未处理的问题。升级后记得反馈到社区forum.cocos.com!
