Cocos Creator Cocos2d-x

Cocos Creator

Cocos Creator是以内容创作为核心的游戏开发工具,在Cocos2d-x基础上实现了彻底脚本化、组件化和数据驱动等特点。 Cocos Creator基于开源框架Cocos2d-x,实现了一体化、可扩展、可自定义工作流的编辑器,并在Cocos系列产品中第一次引入了组件化编程思想和数据驱动的架构设计,简化了Cocos2d-x开发工作流中的场景编辑、UI设计、资源管理、游戏调试和预览、多平台发布等工作,是使用Cocos2d-x进行团队协作开发的良好选择。
2019年03月05日
V2.0.9 版本
本次发布的 2.0.9 版本新增了百度小游戏平台的支持,并且大幅优化了 DragonBones/Spine在小游戏和 Web 平台上的性能,优化了微信小游戏的资源加载性能和动态文本刷新效率。同时,我们进一步完善了引擎和编辑器的兼容性、稳定性,让大家能够获得更好的开发体验。良好的品质离不开细心的打磨,非常感谢各位开发者通过社区、GitHub、Cocos 企业服务等渠道反馈的意见。
以下是相对于 2.0.8 的改动说明:

What's New

 

支持发布到百度小游戏平台

Cocos Creator 正式支持了发布到百度小游戏,详细用法请查阅 发布到百度小游戏平台

提升 DragonBones 和 Spine 在非原生平台上的性能

之前 Cocos Creator 在 2.0.7 版本中,已经大幅优化过了 DragonBones 和 Spine 在原生平台上的性能,优化后的性能甚至比 1.9、1.10 还快了平均一倍。而这次发布的 2.0.9,则又针对 Web、小游戏等非原生平台,新增了SHARED_CACHE PRIVATE_CACHE 两种加速模式,使 DragonBones 的性能提升了 15倍,Spine 的性能提升 3 - 6倍。  
启用加速模式后的性能测试结果
  • 测试的分值根据帧率和动画数量换算而来,值越高性能越好。
在同屏播放三个以上的动画时,SHARED_CACHE 加速模式还能大幅降低内存开销,以下是同屏一百个动画的内存对比
  • 测试的分值越低表示内存占用越少。动画越多 SHARED_CACHE 节省的内存就越多。
要启用极速模式,只需要在 DragonBones 或 Spine 组件上设置 Animation Cache Mode 为 SHARED_CACHE 或 PRIVATE_CACHE 即可。关于极速模式的更详细信息,可参考文档中的属性说明。

提升微信小游戏运行性能

 

优化了微信小游戏的资源加载速度

针对微信小游戏缓存资源耗时较长的问题,我们调整了资源缓存策略,将耗时较长的缓存操作自动延后(#72),缩短了资源加载所需的等待时间。

大幅优化动态文本刷新性能

微信小游戏 7.0.3 版本开始,底层 texImage2D调用耗时过长,导致 Label渲染系统字体或 ttf 字体时,一旦文字内容发生改变就会影响性能。为此,我们在 Label组件上新增了一个 Cache Mode选项,该选项设为 CHAR 模式后,就能彻底解决这个性能问题。Cache Mode 可设置的值有:
  • NONE:默认值,Label 中的整段文本将生成一张位图。
  • BITMAP:选择后,Label 中的整段文本仍将生成一张位图,但是会尽量参与 动态合图
  • 只要满足动态合图的要求,就会和动态合图中的其它 Sprite 或者 Label 合并 Draw Call。由于动态合图会占用更多内存,该模式只能用于文本不常更新的 Label
  • CHAR:选择后,原理类似 BMFont,Label 将以“字”为单位将文本缓存到全局共享的位图中,相同字体样式和字号的每个字符将在全局共享一份缓存。能支持文本的频繁修改,对性能和内存最友好。
  • 不过目前该模式还存在如下限制,我们将在后续的版本中进行优化:
    • 该模式只能用于字体样式和字号固定,并且不会频繁出现巨量未使用过的字符的 Label。这是为了节约缓存,因为全局共享的位图尺寸为 2048*2048,只有场景切换时才会清除,一旦位图被占满后新出现的字符将无法渲染。
    • Overflow 不支持 SHRINK
    • 不能参与动态合图(同样启用 CHAR 模式的多个 Label 在渲染顺序不被打断的情况下仍然能合并 Draw Call)
其余需要注意的是:
  • Cache Mode 仅对系统字体或 ttf 字体有效,BMFont 字体无需进行这个优化。
  • Cache Mode 对所有平台都有优化效果。
  • BITMAP 模式取代了原先的 Batch As Bitmap 选项,旧项目如启用了 Batch As Bitmap 将自动迁移至该选项。

预支持在微信小游戏子域启用 WebGL

微信小游戏已计划在后续版本中支持开放数据域中的 WebGL 渲染模式,我们提前对其进行了适配。开发者无需做任何操作,当微信正式推出支持后,游戏就会自动在子域中启用 WebGL,获得更好的性能。
不过需要注意的是,这会导致在目前版本的微信客户端中运行时出现“[GameOpenDataContext] 子域只支持使用 2D 渲染模式”的报错,该报错是引擎检测当前环境是否支持 WebGL 所产生的,不会影响到项目运行,请先无视。
  • 如果升级到 2.0.9 以后,相比微信 7.0.3 之前的版本,仍然有卡顿、掉帧的问题,建议尝试隐藏或者缩小子域的区域,子域像素尺寸越低,性能越高。同时不建议游戏场景中包含常驻子域显示(比如分数之类的信息),这对性能可能有显著影响。

 

支持发布为 Android App Bundle

在构建面板的 Android 平台下,新增了 App Bundle 选项,勾选后即可将 Android 原生游戏发布为 App Bundle。将 App Bundle 提交到 Google Play 后,Google Play 将会根据玩家手机参数的差异,动态下载不同版本的 APK,达到减少游戏的包体的目的。

编辑器改进

  • 在属性检查器中禁止设置节点宽高为负数
  • 在资源管理器中添加排序方式切换按钮,可选择按照名称或类型进行排序
  • 添加层级管理器的搜索清空按钮,清空后将跳转到之前选中的节点
  • 在层级管理器的下拉搜索框中添加通过 UUID 查找资源被引用情况的功能
  • 同步层级管理器和动画编辑器中的节点选中状态
  • 将默认停靠在属性检查器旁边的服务面板移动到构建发布窗口中
  • 移除除了 Sprite 和 Particle 以外的其它渲染组件上的 Blend Factor 属性
  • 完善粒子系统导入导出 plist 的支持
  • 构建项目时在系统任务栏中显示进度条
  • 重复导入 CCB 和 Cocos Studio 工程时将会覆盖原来的文件夹,不再保留多份
  • 构建微信小游戏时,默认关闭微信开发者工具的代码混淆功能,采用 Creator 自带的混淆功能

引擎改进

  • 完善 Label动态字体的渲染效果,避免了文字边缘可能带有黑边的问题
  • 升级 Spine运行库到 3.6
  • 引入了全新的缓动 API:cc.tween,能提供更简洁的语法和更高的灵活性,详见 API - tween
  • RigidBody组件上添加 Awake On Load 属性,用来设置刚体是否默认唤醒
  • 原生平台增加 jsb.copyTextToClipboardAPI,用于拷贝文本到剪贴板
  • 原生平台的模块裁剪不再剔除 XMLHttpRequest 模块
  • 升级 Android 构建工具配置 Gradle至 4.10.3,plugin 至 3.2
  • 将 Android 最低的 Target/Compile SDK Version 从 16 升级至 23,Min SDK Version 仍然是 16
  • 在 Android 8 中默认支持 http 协议 #1664
  • 完善 VideoPlayer组件在 X5 浏览器上的支持
  • 取消 Chrome 69 以上版本中对动态图集的屏蔽(之前会有白色残影所以屏蔽了动态图集)

Bug Fixes

编辑器修复列表

  • 修复动画编辑器无法使用在用户脚本上的问题
  • 修复自动图集不能打包到子包的问题
  • 修复命令行构建项目时,项目会直接生成到 build 目录下的问题
  • 修复命令行构建项目时不加载自定义插件的问题
  • 修复命令行构建项目时 excludeScenes 参数不生效的问题
  • 修复场景编辑器中的网格背景会穿透到某些半透明图片上方,导致颜色和运行时有一些差异的问题
  • 修复自动同步的 Prefab 在保存场景时个别情况下会提示无法保存引用的问题
  • 修复自定义构建插件在“build-finished”阶段获取 BuiltResults 中的子包资源时,资源所在的 nativePath 不正确的问题
  • 修复更改节点层级关系后 Physics Collider 的 Gizmo 显示异常的问题
  • 修复自定义引擎时,项目构建可能出现的无效报错
  • 调整代码自动编译策略,防止插件在修改项目脚本时导入失败

引擎修复列表

  • 修复场景显示对象非常多时会出现渲染错误的问题
  • 修复 Button组件设置为 COLOR 模式后,所在节点颜色不生效的问题
  • 修复在 onLoad之前设置 Button 的 interactable为 false 会导致节点 scale 变为 0 的问题
  • 修复 Label组件未激活就销毁时的报错 #3769
  • 修复 Label在搭配 faceIn action 使用时可能会闪现的问题
  • 修复对 Particle应用 action 会导致粒子发生偏移的问题
  • 修复 Particle 组件会重复解析 plist 中内嵌的 textureData 的问题
  • 修复加载 1.x 旧项目时会丢失场景中的部分 Particle 自定义数据的问题
  • 修复 ScrollView的父节点 scale 为 0 时ScrollView 布局异常的问题
  • 修复 DragonBones如果包含声音文件,播放动画会报错的问题
  • 修复 DragonBones骨骼包含多张纹理时,可能无法渲染的问题
  • 修复 DragonBones的缓存上限未生效,导致缓存不会自动清空的问题
  • 修复加载 1.x 旧项目时会丢失 Spine 的 premultipliedAlpha 设置的问题
  • 修复 Mask组件启用 inverted后未更新点选检测(hit test)的问题
  • 修复调整节点 zIndex后点选检测(hit test)区域可能未刷新的问题 #3895
  • 修复不同 shader 使用同一个 uniform 名称,但是类型不同时获取数据不对的问题
  • 修复在微信小游戏子域中的某些场景中的字段会受到 MD5 干扰的问题
  • 修复原生平台上 WebSocketGC 时的潜在崩溃问题 #1681
  • 修复原生平台 Spine切换父节点后会导致闪退和渲染异常的问题 #1659
  • 修复 iOS原生平台 cc.log的过程中可能会崩溃的问题 #1687
  • 修复 Android平台上 XMLHTTPRequest获取不到 statusText 时引发的崩溃问题 #1629
  • 修复 Android无法播放远程视频的问题 #1661
  • 修复原生和 Web 平台无法加载分包中的资源的问题
  • 修复 Vec3 和 Rect 反序列化结果可能不正确的问题
  • 修复不同 shader 使用同一个 uniform 名称,但是类型不同时获取数据不对的问题

Known Issues

  • 这个版本如果在代码中频繁修改节点的 zIndex,性能开销可能会比较大,我们将在下个版本进行优化。
  • 在百度小游戏平台上,目前暂时还存在一些平台方面的问题,我们正在配合百度的工程师进行修复。
    • 安卓上存在音频兼容性问题
    • 不支持重力感应
    • XMLHttpRequest 不支持 timeout 回调
2019年02月10日
V2.0.8 版本
 
  • 在 cc.WXSubContextView 组件上增加了 reset 方法,让用户在切换子域视图的时候能通过调用这个 API 来正确重置视图大小。(https://github.com/cocos-creator/engine/pull/3718)
  • 修复在安卓微信 7.0.3 上部分机型开启了 Retina 仍然会模糊的问题
  • 修复在安卓微信 7.0.3 上因监听 Device Motion 导致的帧率不稳
  • 修复微信小游戏子包不含任何资源时加载会报错的问题
  • 修复在微信开放数据域中无法使用 BMFont 的问题
  • 修复 RichText 使用 font 标签无效的问题
  • 修复 RichText 使用 on 标签时无法传参的问题
  • 修复编辑器无法通过命令行构建项目的问题
  • 适配从 Creator 2.1 降级到 2.0 之后的场景缩放问题
   
2019年01月07日
V2.0.7 版本
最近刚刚发布的 Cocos Creator v2.0.6主要提供了在 Android 和 iOS 上快速接入 Facebook Audience NetworkFacebook 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
测试的分值根据帧率换算而来,值越高性能越好。可以很明显看到,优化后的性能甚至比 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 中移除的 WebViewVideoPlayer支持
  • [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事件时,获取到平台传入的 resreferrerInfo参数
  • 完善微信小游戏资源下载时的容错处理 #56
  • 新增 CC_RUNTIME预定义宏,在 OPPOvivo小游戏上 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 方法中设置 ToggleisChecked无效的问题
  • 修复游戏暂停再继续以后,Animation发生闪现的问题 #3584
  • 修复 cc.sys.getSafeAreaRect在非 iOS 原生平台返回的设计分辨率坐标不对的问题
  • 修复 Node 的 group修改后立即调用 findCamera,无法获得最新结果的问题 #3642
  • 修复启用 MD5 后反复加载同个 Audio时,调用栈有可能溢出的问题 #3648
  • 修复 Audio多次重复加载后可能无法播放的问题 #3702
  • 修复 AnimationState的参数有可能解析为字符串类型的问题
  • 修复 MouseJoint未能响应 touch cancel 的问题
  • 修复预览游戏时,cc.gameEVENT_GAME_INITEDEVENT_ENGINE_INITED事件不会触发的问题
  • [Wechat] 修复微信小游戏开放数据域上设置-webkit-transform出现的报错
  • [QQPlay] 修复 QQ 轻游戏不响应前后台切换事件的问题
  • [QQPlay] 修复 QQ 轻游戏上如果使用斜体,字体将会变得很小的问题
  • [Wechat][QQPlay]修复小游戏平台 audio setCurrentTime之后,不触发 ended事件的问题 #3373
  • [Wechat][QQPlay]修复在微信小游戏、QQ 轻游戏中播放声音时,切换前后台回到游戏,声音播放的相关问题 #3688
  • [Web] 修复 Chrome69、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 升级指南

4.资源升级

从 v1.10 开始,Cocos Creator 对底层资源类型进行了重构,大多数项目不受影响,但有些项目可能会收到一些警告,详情请查阅 v1.10 资源升级指南

后续版本预告

v2.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.enableRetinafalse
2018年12月14日
V2.0.6 版本

Cocos Creator v2.0.6 基于 v2.0.5 升级而来,在保证 v2.0.5 稳定性的基础上,提供了在 Android 和 iOS 上快速接入 Facebook Audience NetworkFacebook Live Video的支持。Facebook Audience Network 是 Facebook 推出的广告平台,提供了强大的广告变现的能力。Facebook Live Video 是 Facebook 推出的直播 SDK,允许玩家在玩游戏的时候直接进行游戏直播,并且分享到 Facebook 的社交网络,有效提高了游戏的传播能力。有关这两个 SDK 的具体接入流程,请参考文档《Facebook 直播和广告》此外,这个版本还优化了 vivo/OPPO 小游戏的构建流程,建议要发布 vivo/OPPO 小游戏的项目及时升级。

改动列表

  • 在服务面板中添加了 Facebook Audience NetworkFacebook Live Video集成选项
  • 修复 Facebook Instant Games 无法上传的问题
  • 修复 Facebook Instant Games 打出来的 zip 包未启用 zip 压缩的问题
  • 优化了 vivo 小游戏的构建面板:
    1. 移除了 npm 路径输入框
    2. 应用图标修改为任意路径,不再局限于游戏工程的路径,并在应用图标输入框右边添加了可选择图片路径功能的按钮
    3. 去除了 certificate.pem、private.pem 证书固定放在[游戏工程]/build-templates/jsb-link的用法,修改为自主选择它们的路径。同时在选择 certificate.pem 的最右边按钮,增加了证书的功能。(注意使用 Windows 系统需要事前装 openssl 软件和配置其环境变量)
  • 优化了 OPPO 小游戏构建面板:
    1. 移除了 npm 路径输入框和 quickgame 输入框,Cocos Creator 已内置 quickgame。
    2. 应用图标修改为任意路径,不再局限于游戏工程的路径,并在应用图标输入框右边添加了可选择图片路径功能的按钮
    3. 去除了 certificate.pem、private.pem 证书固定放在[游戏工程]/build-templates/jsb-link的用法,修改为自主选择它们的路径。同时在选择 certificate.pem 的最右边按钮,增加了证书的功能。(注意使用 Windows 系统需要事前装 openssl 软件和配置其环境变量)
    4. 打包分包 rpk 时的输出路径调整为和未设置分包 rpk 时的路径一样,在[游戏工程]/build/quickgame/build/目录里。并且打包分包 rpk 时只会生成一个 rpk 文件,不再生成其他分包目录。
  • 微信小游戏发布后默认不启用 ES6 转 ES5
  • 在微信小游戏上默认将最大下载并发数(cc.macro.DOWNLOAD_MAX_CONCURRENT)限制在 10 个以内
  • 修复微信小游戏调用 cc.game.end()时的报错
  • QQ 轻游戏构建时允许直接打包出 zip 文件,便于上传服务器
  • 修复 QQ 轻游戏上 Mask 渲染的问题
  • 修复编译过 Android + AnySDK 后会导致 Android Instant 平台运行闪退的问题

后续版本预告

v2.0.7 即将发布,重点优化原生平台性能
我们很快将对 v2.0.7 进行公测,在这个版本中我们优化了引擎的渲染性能,尤其是原生平台的 Spine 和 DragonBones,性能都有了很大幅度的提升。

v2.1 的迭代将会比较激进
相比 v2.0,v2.1 的提升将主要围绕 3D 领域,我们推荐有 3D 需求的新项目升级到这个版本,并且在论坛等渠道和我们建立联系,我们负责 3D 的小伙伴将提供相关支持。由于 v2.1 是一个很新的版本,我们将加快迭代频率,尽量满足开发者的需求。我们将会在近期就推出 v2.1.1 版本,用来支持 3D 场景编辑、摄像机预览和材质系统,优化 3D 开发流程。
2018年11月29日
V2.1.0 版本
Cocos Creator 从 v2.1 版本开始,最大的改动就是支持了 3D 模型渲染、3D Camera、3D 骨骼动画、3D 点选等 3D 特性,同时编辑器原生支持解析 FBX 格式的 3D 模型文件,不需要额外的导入流程。
 
在之前的 v2.0 中,Cocos Creator 就已经用上了基于 Cocos3D 的 3D 渲染器,具备了正式引入 3D 支持的基础。3D 特性的加入可以大大丰富 2D 游戏的表现力,减轻 2D 游戏的资源开销,带来更多的想象与扩展空间。不过需要强调的是,Cocos Creator 的目标用户仍然是现有的 2D 游戏开发团队,2D 游戏仍然是 Cocos Creator 2.x 时代的核心服务目标。我们会坚持优化 2D 游戏的开发体验及基础性能,逐步增加适合融入 2D 游戏的 3D 功能,陪伴 2D 游戏团队共同成长。因此,Cocos Creator 不会成为一个纯 3D 引擎,那是 Cocos3D 的目标。Cocos Creator 的发展路线更接近 2.5D。
 
这不是 Cocos 第一次把引擎从 2D 升级到 3D,几年前 Cocos2d-x 就在 3D 领域进行过扩展,积累了不少经验,更诞生了“剑与家园”这样非常优秀的作品。不过当时是在一套已经很重的 2D 渲染器上堆砌 3D 功能,也缺乏编辑器支持,因此最终并未得到市场的广泛认可。而这一次,Cocos Creator 是在 Cocos3D 的 3D 渲染器基础上,直接把 3D 潜能释放出来,也保证了无缝的编辑器使用体验,因此这次的改变是完全不同性质的。
 

后续版本预告

v2.0 会继续维护,原生平台性能将会尽快优化
v2.0 和 v2.1 将在一段时间内共同发展,v2.0 会继续维护,增加更多的性能优化和缺陷改善。我们很快将对 v2.0.7 进行公测,在这个版本中我们优化了引擎的渲染性能,尤其是原生平台的 Spine 和 DragonBones,性能都有了很大幅度的提升。
 
v2.1 的迭代将会比较激进
相比 v2.0,v2.1 的提升将主要围绕 3D 领域,我们推荐有 3D 需求的新项目升级到这个版本,并且在论坛等渠道和我们建立联系,我们负责 3D 的小伙伴将提供相关支持。由于 v2.1 是一个很新的版本,我们将加快迭代频率,尽量满足开发者的需求。特别是目前 v2.1.0 版本仍不支持 3D 场景编辑,仅能够在属性检查器中对节点进行 3D 参数的设置。我们将会在近期就推出 v2.1.1版本,用来支持 3D 场景编辑和材质系统,优化 3D 开发流程。

完整改动列表(相比 v2.0.5)

What's New

3D 节点  

在 2.1 中,默认新创建出来的节点都仍然是 2D 的,当有需要时,只需要点击节点右上方的 2.5D 按钮就能切换成 3D 模式,切换后就能编辑 z 轴,详见 [3D Node]

3D节点切换动画_23D节点切换动画

3D Camera  

和 Node 一样,Camera 也分为了两种模式。当你把 Camera 组件添加到普通的 2D 节点上时,它就是一个 2D Camera。当你把 Node 切换到 3D 模式后,Camera 也会进入 3D 模式,3D 模式下即可编辑 Camera 的 FOV 等参数。

3D Camera切换动画_2 3D Camera切换动画

3D 模型导入  

目前 Cocos Creator 支持导入的 3D 模型格式为使用非常广泛的 .fbx,基本上 3D 建模软件都支持导出这种格式。导入的流程很简单,只需要将 .fbx 模型资源拖入到资源管理器,等待片刻即可完成导入工作。导入完成后,在资源管理器中看到导入后的模型资源是一个可以展开的文件夹,导入模型的时候编辑器会自动解析模型的内容,并生成 Prefab、网格、骨骼动画等资源,详见[导入模型]

1

Mesh Renderer 组件  

Mesh Renderer 用于绘制网格资源,详见[Mesh Renderer 组件]

2骨骼动画组件  

骨骼动画组件继承自 Animation 组件,骨骼动画组件的使用方法与 Animation 组件没有太大区别,只是骨骼动画组件使用的剪辑只能是骨骼动画剪辑。骨骼动画组件将在导入模型时自动添加到模型的 Prefab 中,详见[骨骼动画组件]3   更多 3D 相关说明,请查阅文档[3D 系统]

优化自动图集构建速度  

大幅优化自动图集构建速度,如果图集没有改变的话则直接使用上次构建的结果。

进一步提升渲染性能  

v2.0 相比 v1.x,有一些情况引擎不会进行渲染批处理,导致了 Draw Call 的增加。v2.1 对这些情况重新进行了优化。如之前 Color 或 Opacity 不同无法批处理,Sliced 和非 Sliced 共用同一贴图无法批处理,Opacity 为 0 的节点仍占用 Draw Call 的问题都得到了解决。

增加模拟器调试功能  

在项目设置 - 预览运行面板中,新增了“开启模拟器调试界面”选项和“等待调试器连接”选项。前一个选项的作用是,在模拟器预览项目时将自动打开调试窗口。后一个选项的作用是,暂停启动过程直至调试器连接完成,用于调试加载过程。  

4

纹理自动压缩  

可以直接在编辑器中设置纹理需要的压缩方式,Creator 将在项目发布时自动对纹理进行压缩。在 Web 平台上支持同时导出多种图片格式,引擎将根据不同的浏览器自动下载合适的格式,详见[压缩纹理]

编辑器  

  • Dashboard 改为在打开工程的时候关闭,工程关闭的时候自动打开
  • Dashboard 将会自动记录上一次创建的工程路径
  • 优化 Button 在编辑器下的预览效果
  • 优化 Button Click Event 对组件的索引方式,避免脚本重命名后索引就丢失的问题
  • QQ 轻游戏构建时允许直接打包出 zip 文件,便于上传服务器
  • 新增插件商城在插件下载完成后自动提示用户安装
  • 构建微信小游戏主域工程时,不会再清空子域
  • 修改构建 Android 平台时默认选中的 API Level 为当前最高的 Level(Target API Level)
  • 移除了场景编辑器中的节点路径栏,节点路径可通过层级管理器的节点右键菜单获取
  • 动画编辑器对 cc.Enum 和 cc.Integer 类型的数值默认改用 Constant 曲线,不进行插值
  • 动画编辑器关键帧增删体验优化
  • 优化引擎自动编译有关体验
  • 新增了其它一系列体验优化

引擎  

  • [UI] 在 Layout 组件上新增 affectedByScale 属性,如果开发者希望 Layout 子节点的缩放能够影响布局,可以手动开启该选项。
  • [UI] 支持 XML 格式的 fnt 文件
  • [UI] Label 节点 onEnable 时将立即刷新一次节点的 Content Size
  • [UI] 当 Button 的 target 未定义时,将默认使用当前节点
  • [UI] ToggleContainer 增加了和 Toggle 类似的 checkEvents 事件属性,该事件只有在 Toggle 的 isChecked 状态变为 true 时才触发
  • [Action] 新增了 cc.Rotate3DTo、cc.rotate3DTo、cc.Rotate3DBy、cc.rotate3DBy 四个 Action 的支持
  • [Native] 在 iOS 和安卓平台重新加入了在 v2.0.0 中移除的 WebView 和 VideoPlayer 支持
  • [Native] Mac 原生平台切换至 V8 引擎,如需用回 JSC 需手动修改宏,详见 [#1515]
  • [Native] 添加原生平台 LocalStorage 缺失的 key 和 length 属性,详见[ #1371]
  • [Native] 在 iOS 原生平台上采用跟 Android 统一的拼音输入行为,不保留输入未完成的拼音
  • [Android] 升级安卓编译方式到 NDK r16 + Clang,同时采用 Clang 编译安卓预编译库
  • [Android] 升级 Android 构建工具配置 Gradle 至 4.4,plugin 至 3.1.4。(Gradle 4.6 有已知 issue 会导致资源打包失败)
  • [Android] 优化安卓输入框使用体验
  • [Android] 压榨安卓空包包体,最小包体从 7.0MB 减小到 6.3MB
  • [Web] 增加 Web 平台上 WebView 的透明度支持
  • [Web] 优化了 WebView 组件的显示位置
  • [Web] 优化 VideoPlayer 在 X5 浏览器上的适配表现
  • [Wechat] 支持在微信小游戏上响应 cc.game.EVENT_SHOW 事件时,获取到平台传入的 res 和 referrerInfo 参数
  • [VideoPlayer] 优化了 VideoPlayer 全屏播放的有关表现
 

Bug Fixes

编辑器  

  • 修复动画编辑器节点列表可能没更新的问题
  • 修复在场景编辑器里面能选中 RichText 子节点的问题
  • 修复使用命令行构建项目时,不论是否出错,错误码始终返回 0 的问题
  • 修复场景编辑器中的网格背景会穿透到某些半透明图片上方,导致颜色和运行时有一些差异的问题
  • 修复外部拖拽资源到资源管理器的无效位置时,编辑器会报错的问题
  • 修复发布 Android Instant 平台时远程服务器 ip 获取错误的问题

引擎  

  • [Core] 修复节点 destroy 后,activeInHierarchy 仍为 true 的问题
  • [Core] 修复 RenderTexture 中的 filter, premultiply alpha 设置无效的问题
  • [Core] 修复无法加载由插件引入的场景的问题
  • [Web] 修复 Chrome 69、70 上半透明对象渲染后可能出现白色残影的问题(Since 2.0)[#3357]
  • [UI] 修复 Button 在多个状态互相叠加时可能有些状态失效的问题
  • [UI] 修复 LabelOutline 设置颜色无效的问题
  • [UI] 修复了在 start 方法中设置 Toggle.isChecked 无效的问题
  • [UI] 修复 LabelOutline 组件 enabled 状态修改时效果没同步变化的问题
  • [Animation] 修复 AnimationState 的参数有可能解析为字符串类型的问题
  • [QQPlay] 修复 QQ 轻游戏不响应前后台切换事件的问题
  • [QQPlay] 修复 QQ 轻游戏上如果使用斜体,字体将会变得很小的问题
  • [QQPlay] 修复 QQ 轻游戏在锁屏重新进入或前后台切换时,声音无法重新播放的问题
  • [微信小游戏] [QQPlay] 修复小游戏平台 audio setCurrentTime 之后,不触发 ended 事件的问题[#3373]
  • [Native] 修复原生平台连接 socket.io 服务器可能会报 Bad Request 的错误
  • [Native] 修复 iOS 和安卓无法检测重力感应的问题
  • [Native] 修复 iOS 调用 cc.game.restart 重启游戏后再输入文本会崩溃的问题
  • [Native] 修复 Windows 原生平台上 Label 的 opacity 属性不生效的问题
  • [Native] 修复安卓上无法监听 onKeyUp 的问题
  • [Native] 修复安卓手机如果自带的 SSL 证书过期后会导致资源加载失败的问题
  • [Native] 修复安卓原生平台下载图片时不支持服务器重定向的问题 [#PR]
  • [Physics] 修复 MouseJoint 未能响应 touch cancel 的问题
  • [Spine] 修复当 Spine 在 Mask 下重新加载时贴图有可能丢失的问题
 

MIGRATION GUIDE

 v2.1 升级注意事项  

  • Node 的 rotation 相关 API 已被标记为 deprecated,运行时将提示升级为 angle ,详见[3D Node - Node API 升级]
  • 安卓的 NDK 版本需要升级到 r16,否则将编译失败。

微信小游戏开放数据域  

从 v2.0.1 开始,Cocos Creator 升级了开放数据域解决方案,请参阅[接入小游戏开放数据域]

v2.0 升级指南  

详见[v2.0 升级指南]

资源升级  

从 v1.10 开始,Cocos Creator 对底层资源类型进行了重构,大多数项目不受影响,但有些项目可能会收到一些警告,详情请查阅[v1.10 资源升级指南]。  
  以上就是 Cocos Creator v2.1.0 的更新说明。各位开发者进入 Cocos 官网下载新版本,下载完毕新建一个 example 工程,打开 assets/cases/3d 下的案例即可体验。
2018年11月06日
V2.0.5 版本
v2.0.5 相比不久前发布的 v2.0.2,提供了发布到 OPPO 小游戏和 vivo 小游戏平台支持,修复了不少问题,进一步提升了产品稳定性,强烈建议所有 2.0 用户及时更新版本。良好的品质离不开细心的打磨,非常感谢各位开发者通过社区、GitHub、Cocos 技术服务等渠道反馈的意见。

RELEASE NOTES

新增发布到 OPPO 小游戏平台

Cocos Creator 正式支持了发布到 OPPO 小游戏,详细用法请查阅 [发布到 OPPO 小游戏平台]

新增发布到 vivo 小游戏平台

Cocos Creator 正式支持了发布到 vivo 小游戏,详细用法请查阅 [发布到 vivo 小游戏平台]。

Editor

  • [Auto Atlas] 修复自动图集默认的BestAreaFit 算法无法计算出正确的图集大小的问题
  • [Auto Atlas] 修复自动图集的目录出现嵌套时,父目录中的图集会把子目录中的图片重复打包进去的问题
  • [Auto Atlas] 修复自动图集打包后可能出现黑边的问题(旧的自动图集需要删掉配置重新创建才会生效)
  • [Auto Atlas] 修复自动图集Force Squared 选项不生效的问题
  • [Wechat] 修复构建微信小游戏时无法修改子域目录名的问题
  • [QQPlay] 修复v2.0.2 在QQ 轻游戏上无法导出插件脚本的问题
  • [Google Play Instant] 构建Android Instant 时允许Default URL 为空

Engine

  • [Core] `cc.loader.loadResArray` 的第二个参数支持传入一个type 数组(感谢@caochao)[#3312]
  • [Native] 增加`cc.sys.getSafeAreaRect()` API 来获取手机屏幕安全区域(以设计分辨率为单位)
  • [Core] 修复v2.0 屏幕渲染效果有轻微模糊的问题
  • [Core] 修复了当组件被`destroy()` 时,如果所在节点还未添加到场景,组件可能仍然会被激活的问题
  • [Core] 修复SpriteFrame 调用`setRect()` 后效果不对的问题
  • [Core] 修复v2.0 中cc.Texture2D 调用initWithData() 时的报错
  • [Core] 修复v2.0 中渲染组件在节点未激活时依然可能会渲染的问题
  • [UI] 修复Toggle 组件设置`isChecked` 属性时状态未更新的问题
  • [UI] 修复ScrollView.content 对象修改时的报错
  • [UI] 修复v2.0 中RichText 中的部分文字可能不显示的问题
  • [UI] 修复PageView 的began 事件不触发的问题
  • [UI] 修复Mask 中的segments 无效的问题
  • [UI] 修复Mask 嵌套时Stencil 状态不对的问题
  • [UI] 修复WebView 在读取default 页面时不触发load 事件的问题
  • [UI] 修复横竖屏频繁切换时EditBox 可能报错的问题
  • [UI] 修复`once` 注册的点击事件在响应后仍会穿透给平级的其它节点的问题
  • [Audio] 修复Audio 对effect 的操作可能影响到music 的问题
  • [Spine] 修复v2.0 中ScrollView 中的Spine 透明度和预乘不对问题
  • [Animation] 修复动画quickFindIndex 的问题
  • [Animation] 修复通过Animation 注册lastframe 事件无效的问题
  • [Particle] 修复粒子系统调用`resetSystem()` 会失败的问题
  • [Wechat] 修复微信小游戏缓存空间已满时,资源无法加载的问题
  • [Wechat] 修复微信小游戏从后台切换前台,会播放没有释放掉的音频的问题
  • [Facebook Instant Games] 修复在Facebook Instant Games 上未启用Retina 的问题
  • [iOS] 修复v2.0 在iOS 9 上由于不支持ES6 导致的报错
  • [QQPlay] 修复QQ 轻游戏上font size 为float 类型的时候,文字显示过小的问题
  • [Google Play Instant] 修复在分割首包界面编辑时,概率性出现jsb-adapter 重新加载导致的真机显示黑屏问题

MIGRATION GUIDE

微信小游戏开放数据域

从 v2.0.1 开始,Cocos Creator 升级了开放数据域解决方案,请参阅 [接入小游戏开放数据域]。

 v2.0 升级指南

详见 [v2.0 升级指南]。

资源升级

从 v1.10 开始,Cocos Creator 对底层资源类型进行了重构,大多数项目不受影响,但有些项目可能会收到一些警告,详情请查阅 [v1.10 资源升级指南]。
2018年10月18日
V2.0.4 版本
相对于 2.0.2,2.0.4  增加了发布到 Google Play Instant 的支持。其它功能未做任何调整。

相关资源

[使用文档]

2018年09月30日
V1.10.2 版本
0v1.10.2 是对不久前发布的 v1.10.1 的缺陷修复,建议所有 1.10 用户及时更新版本。2.0 用户无需降级,因为该版本的修复都已经包含在近期发布的 v2.0.2 中。此外,v1.10.2 并未包含 v2.0.2 中对微信小游戏和 QQ 玩一玩的完整修复,因此如果需要发布到小游戏平台,还是建议升级到最新的 v2.0.2 版本。良好的品质离不开细心的打磨,非常感谢各位开发者通过论坛、GitHub、Cocos 技术服务等渠道反馈的意见。

RELEASE NOTES

Editor

  • 修复退出动画编辑模式后,Widget.enabled 等属性未正确还原的问题
  • 修复动画编辑完成后不保存但是记录残留在编辑器中的问题
  • 完善层级管理器的节点展开、折叠操作
  • 完善层级管理器、资源管理器拖动节点时的样式表现
  • 修复当组件的激活框被点击的时候,组件会折叠起来的问题
  • 修复资源管理器复制多个文件的时候,只复制第一个的问题
  • 修复选中粒子退出动画编辑器的时候,编辑器帧率会变低的问题
  • 修复导入未支持的 fnt 会导致编辑器卡住的问题
  • 启动页面中的语言选择对话框,直接获取系统设置

Engine

  • 修复 removeAllActions 无法移除所有 action 的问题
  • 修复 SHOW ALL 模式下导致的触摸位置偏移问题
  • 修复 Chrome 上旋转 90 度后 Editbox 被隐藏的问题
  • 修复锁屏情况下竖屏游戏横屏显示时重力感应的方向错误
  • 修复获取 TiledLayer properties 为空的问题
  • 修复大量调用 loader 加载 API 后导致的加载性能下降
  • 修复 stopAllEffect、pauseAllEffects、setEffectsVolume 会同时影响到背景音乐的问题
  • 修复 once 事件监听器无法阻断平级触摸事件的问题
  • 修复 touchstart 坐标在微信小游戏上不对的问题
  • 修复了 QQ 玩一玩上 emoji 导致的部分机器黑屏问题
  • 修复原生平台上 java 和 js 相互调用时传递 null 引发的一些问题
  • 修复 Vec2.signAngle 的计算错误
  • 修复多行文本框某些情况下无法换行的问题
  • 修复 ScrollView 跟 mask 大小不一致时候,scrollTo* 位置会有偏差
  • 修复 ScrollView 向右下角或左上角滑动时,滚轮有概率显示异常的问题
2018年09月22日
V2.0.2 版本

详细更新列表

FEATURE

  • 原生平台添加 jsb.saveImageData 接口来保存截图,请参考测试用例
  • TTF 字体加载融入 Loader 体系,支持 RichText 在全平台的延迟加载
  • 添加 cc.Mat4 value type 类型,便于创建矩阵和矩阵的运算

Editor 修复

  • 修复动画编辑器保存完动画后,取消保存,但修改扔残留在场景数据中的问题
  • 修复 MotionStreak 在动画编辑器中添加 color 属性时导致属性面板 color 变为 null 的问题
  • 修复 RichText 节点的 Anchor 值修改后,场景编辑器中无响应的问题
  • 修复 Prefab 编辑界面下重编译脚本导致场景丢失的问题
  • 修复关闭 Prefab 后 Hierarchy 层级全部展开并跳到首节点的问题
  • 修复节点树未展开状态下,点击 inspector 中的节点无法跳转的问题
  • 修复节点树展开选项设置无效的问题
  • 修复复制节点树不复制状态,关闭的节点树会被全部展开的问题
  • 修复 Prefab 编辑界面下重编译脚本导致场景丢失的问题
  • 修复资源管理器的多项复制和粘贴无效问题
  • 修复动画编辑器打开再关闭后场景内持有焦点的粒子系统变卡顿的问题

Engine 修复

  • 将 Camera clearFlags 默认开启 stencil 和 depth
  • 修复了 inverted Mask 无效的问题
  • 修复部分小米手机上由于 Stencil buffer 状态问题出现的渲染错乱
  • 修复 Mask 组件互相影响 Stencil 区域的问题
  • 修复 Mask 内部的 Spine 节点影响外部的 Spine 节点同样被剪裁的问题
  • 修复复杂 Graphics 让 Mask Stencil 失效的问题
  • 修复大量调用 loader 加载 API 后导致的加载性能下降
  • 使用 uint8 做 MeshBuffer 扩充时的数据拷贝,避免 Graphics 因此产生的颜色错误
  • 兼容微信 6.6.5 及以下版本不支持 gl.getExtension 导致的引擎初始化失败
  • 修复微信开放数据域中重写 wx.onMessage 导致的警告
  • 修复小游戏开放数据域中旋转节点方向错误的问题
  • 修复开放数据域中开启 ES6 转 ES5 导致 cc 未定义的问题
  • 修复 Editbox stayOnTop 时没有监听 endEditing 的问题
  • 修复 Editbox stayOnTop 状态下文字被遮挡的问题
  • 修复 Web 平台 Editbox 在 Camera 缩放情况下,输入框和文字偏离的问题
  • 修复小游戏平台 Editbox 多行输入时,点击完成会触发多次 editingDidEnd 事件的问题
  • 修复 Editbox 在开始输入时重新适配导致场景过小的问题
  • 修复 Chrome 上旋转 90 度后 Editbox 被隐藏的问题
  • 修复 Particle 生命周期长于 emissionRate 时不会重复播放的问题
  • 修复粒子系统偶尔出现的虚化残影渲染问题
  • 修复 Sprite 在 onEnable 是可能遗漏更新 material 导致的渲染问题
  • 修复延迟加载情况下,Sprite 的颜色设置失效的问题
  • 同步 TiledTile 和 TiledLayer 中对应图块的 gid
  • 避免 TiledLayer 在没有贴图的情况下的报错
  • 修复获取 TiledLayer properties 为空的问题
  • 修复 once 事件监听器无法阻断下层触摸事件的问题
  • 修复 ActionManager removeAllActions 的泄漏风险
  • 修复 MotionStreak 的颜色类型问题
  • 修复 MotionStreak 不支持延迟加载的问题
  • 修复 ScrollView 中 content 的定位偏差
  • 修复 SHOW ALL 模式下导致的触摸位置偏移问题
  • 修复 CC_WECHATGAME 在子域中为 false 的问题
  • 修复节点开启 RichText 控件导致子节点消失的问题
  • 修复 AudioEngine setFinishCallback 的使用体验问题
  • 修复 AudioEngine stopAllEffect 会把背景音乐停掉的问题
  • 修复 SpriteFrame 在修改 cap inset 设置时没有更新 uv 的问题
  • 移除 cc.sys.dumpRoot 和 cc.sys.cleanScript
  • 修复设置帧率导致模拟器和原生平台闪屏的问题
  • 修复 Windows 平台 Label 换行后显示为红色的问题
  • 修复 Mac 平台模拟器占用 CPU 过高的问题
  • 修复原生平台中 Audio.State 缺失的问题
  • 修复原生平台 sys.getNetworkType 和 getBatteryLevel 未适配的问题
  • 修复原生平台 Editbox 编辑过程中可能产生的报错
  • 修复 iOS 平台 video player 全屏请求的问题
  • 修复 iOS Safari 上 fullscreen video 退出无法清除的问题
  • 修复 Native 平台 Show / Hide 事件监听回调可能导致的崩溃问题
  • 修复 windows 平台从菜单栏唤醒程序时的偶发崩溃问题
  • 修复使用 SDKBox 引起的构建报错
  • 修复部分文档和 ts 代码提示错误
  • 修复部分 API 描述和废弃问题

					
2018年08月23日
V2.0.1 版本
2.0.0 是一个经历了大量底层重构的全新版本,部分开发者在升级项目过程中遇到了一些恼人的问题,这些问题我们一一收集并尽全力解决,现在为大家带来 2.0.1 版本。这个版本除了大幅度提升稳定性和项目升级的友好度以外,我们还为开发者带来了全新的微信小游戏开放数据域方案,大幅度提升开放数据域性能和使用的灵活度。

详细更新列表

FEATURE

  • 更新开放数据域方案
  • 提供微信平台清理缓存的 API
  • 支持微信小游戏和玩一玩平台通过 cc.game.setFrameRate 设置帧率
  • 为模拟器新增 View 菜单用于设置分辨率
  • 模块化 RenderTexture 和 DynamicAtlas

Editor 修复

  • 修复编辑器中粒子资源导入的问题
  • 修复 Label 在编辑器中不受节点 Anchor 改变影响的问题
  • 修复编辑器中设置 BMFont 字体报错
  • 修复部分 Particle 的颜色在 inspector 中无法显示和设置的问题
  • 修复模拟器改变尺寸界面不会适配的问题
  • 修复动画编辑器的曲线编辑器状态残留问题
  • 修复粒子系统在编辑器中的 svg 标示丢失的问题
  • 修复 Editbox 编辑 fontColor 不生效的问题
  • 修复动画编辑器在播放动画时切换 WrapMode 导致场景编辑器中节点无法拖动的问题
  • 修复节点 _localZOrder 数据保存时持续变化的问题
  • 修复编辑器选中节点后键盘方向键无法微调位置的问题
  • 修复场景编辑器选中节点后不会在层级管理器中自动定位的问题
  • 修复节点树在删除节点后自动展开的问题
  • 修复 inspector 面板中点击节点层级管理器不会自动定位的问题
  • 优化 Console 自动滚动体验
  • 修复切换父节点 active 状态时所有子节点全部展开的问题
  • 修复点击 Hierarchy 节点时的闪动问题
  • 修复 Auto Atlas 预览失效问题

Engine 修复

  • 修复 Spine 动画的渲染问题
  • 修复 shader 精度导致的动画抖动
  • 修复节点 inactive 状态下设置属性对 Sprite 影响不生效的问题
  • 修复 Tiled 类型 Sprite 在贴图旋转情况下的渲染错误
  • 修复开放数据域中背景无法透明的问题
  • 修复 Graphics 顶点数过多时的渲染错误
  • 修复 Camera 缩放后部分位置不响应事件的问题
  • 修复 Camera 缩放后 Tilemap 的剪裁问题
  • 修复 RichText 子节点的复用导致的状态错误
  • 修复 IE11 支持
  • 修复 qqplay 不支持 base64 格式的 Particle 贴图问题
  • 修复 Spine 调试插槽在 Release 版本不可用的问题
  • 修复各个平台前后台切换事件的问题
  • 修复 Label 在切换为 BMFont 类型时由 blend function 导致的渲染错误
  • 修复 qqplay 平台在 Android P 系统下的黑屏
  • 修复 Windows 平台 XMLHttpRequest GET 结果为 timeout 的问题
  • 修复 AudioClip 不支持延迟加载的问题
  • 补充缺失的 deprecation API,修复发现的 API 文档问题
  • 修复多个 Mask 共存时 Stencil 会被最后一个 Mask 覆盖的问题
  • 修复开放数据域中 Mask 组件的黑边问题
  • 修复 Mask 使用 image stencil 时不支持延迟加载的问题
  • 修复 Spine 在非调试模式下无法显示调试插槽的问题
  • 修复 Native 平台在勾选 MD5 时音频无法播放的问题
  • 增强 Particle 资源的容错,支持 effecthub 导出的资源格式
  • 修复 resume 可以直接播放未播放过的音频的问题
  • 修复包含 Mask 模块并剔除 Graphics 模块时导致的 Graphics 缺失问题
  • 修复 Native 平台按钮在 active 为 false 时仍然可以收到触摸事件
  • 修复 Web 平台 VideoPlayer 切换 visibility 时视频没有隐藏的问题
  • 修复 windows & mac 模拟器窗口大小改变时不会自动适配的问题
  • 修复 Tilemap parser 的解析问题
  • 修复 Camera 使用 RenderTexture 截图时不支持 mask 的问题
  • 修复多个 Graphics 互相切换时导致的报错
  • 修复粒子系统中粒子最后消失时最终 alpha 无效的问题(不透明)
  • 优化细小的文字渲染在 Native 平台上的表现
  • 修复安卓平台返回键的监听失效
  • 修复 iOS 平台弹出输入框后点击输入框会消失的问题
  • 修复 iOS 平台输入中文字符时的乱码问题
  • 优化输入框的完成按钮设计
  • 修复微信小游戏中输入表情图异常的问题
  • 优化 TiledTile 的 API 设计(不允许设置 layer,自动获取)
  • 修复六边形 TileMap 使用 TiledTile 时的偏移问题
  • 修复原生平台 FileUtils writeStringToFile 调用时崩溃问题 

REMOVED & DEPRECATION

v1.x 的大量私有以及非核心 API 被移除或废弃,详细内容可以参考升级指南.

相关资源

 
2018年08月03日
V2.0 版本
经历了大规模的底层重构和为期两个月的稳定性迭代,Cocos Creator v2.0 终于和大家见面了。总体上来说,Cocos Creator v2.0 设计的核心目标有两点:
  • 在 Web 和小游戏平台,大幅提升引擎基础性能
  • 提供更高级的渲染能力和更丰富的渲染定制空间
为了完成这个目标,我们彻底重写了底层渲染器,从结构上保障了性能的提升和渲染能力的升级。同时,为了保障用户项目可以更平滑得升级,我们几乎没有改动组件层的 API。当然,这些改动并不是对用户完全透明的,比如引擎加载流程、事件系统、引擎整体 API 的精简和重组,这些都会带来对用户层 API 的影响,我们希望通过升级指南、文档和 deprecation 信息等方式帮助大家升级。  

编辑器

  • 实现了 Texture 的 premultiply alpha,filter mode,wrap mode 配置
  • 将混合模式配置抽象到 RenderComponent 组件基类中,所有渲染组件都可以配置
  • Camera 组件升级,作为直接的渲染入口,可配置各项基础渲染参数
  • 集成 Quick Compile,自定义引擎只需要使用菜单的 “开发者选项” -> “编译引擎” 可在几秒内快速编译完成
  • 将微信小游戏开放数据域独立为一个发布平台,拥有独立的发布面板

引擎

  • 添加基于 3D 引擎的新渲染器
  • 渲染组件实现全面升级
  • 彻底移除渲染树,由渲染组件直接组装渲染数据并提交渲染
  • 精简 cc 命名空间 API
  • 精简 Director API
  • Camera 组件升级
  • 启动流程升级,用户脚本和插件脚本可以更容易干预引擎初始化
  • 平台相关启动代码独立分离,更易于定制
  • 事件系统优化,区分节点树上通过捕获冒泡机制派发的系统事件和直接派发的普通事件
  • Fit Width & Fit Height 同时勾选的适配模式兼容微信小游戏平台
  • 正式增加了 RenderTexture 资源类型,可以保存摄像机中截取的渲染内容
  • 简化 TiledMap 功能,为后续的升级做铺垫
  • 物理引擎升级,性能优化

REMOVED & DEPRECATION

  •  v1.x 的大量私有以及非核心 API 被移除或废弃,详细内容可以参考升级指南和 [deprecated.js]
相关资源

Known Issues

  • 目前 2.0 版本存在着在原生平台上引擎渲染性能可能下降的情况,对特定的游戏可能会有较明显的影响,建议开发中的原生平台项目谨慎升级。我们后续会进行优化。
 
2018年08月13日
V1.10.1 版本
v1.10.1 是对不久前发布的 v1.10.0 的缺陷修复,建议所有 1.10 用户及时更新版本。该版本不是 2.0 的替代版本,2.0 仍然是目前的最新版,新项目仍然建议直接上 2.0。作为 2.0 之前的最后一个大版本,我们会尽量维护到稳定为止,以支持暂时无法升到 2.0 的用户。良好的品质离不开用心的打磨,非常感谢各位开发者通过论坛、GitHub、Cocos 技术服务等渠道反馈的意见。让我们共同期待即将发布的 2.0.1!
            

RELEASE NOTES

 

Editor

  • 修复微信子包相关问题
  • 修复项目构建后 project.js 可能为空的问题
  • 修复 QQ 玩一玩构建报 bkgame 相关错误
  • 修复项目中包含大量碎图时,刷新预览或者预览时保存场景会导致编辑器卡顿的问题
  • 修复构建面板不勾选“Source Maps”时,微信开发者工具报错
  • 修复启用 MD5Cache 以后,vConsole 不显示的问题
  • 修复 mac 平台偏好设置内无法选取 .app 程序的问题
  • 动画编辑器上增加了新建 clip 的按钮
  • 层级管理器细节完善

Engine

  • 修复 audioEngine 的 isLoop 始终返回为 false 的问题
  • 修复 Label 组件在使用 TTF 字体的情况下,文本高度发生偏移的问题
  • 完善 QQ 玩一玩下的 EditBox 的文本显示
  • 修复安卓视频播放相关问题

 
2018年07月31日
V1.10.0 版本
v1.10 版本相比 v1.9 新增了大量特性,重构了引擎的资源部分,大幅度优化了 settings.js 文件的体积。此外,1.10 还在微信小游戏及 Web、原生平台上都支持了游戏代码分包功能。这样一来便能够突破微信首包 4MB 的限制,并且提升游戏载入速度,详见[代码分包加载]。与此同时,1.10 对不少编辑器代码进行了重写,提升了编辑器的使用体验和性能。 如果您的项目计划升级到之后的 v2.0,请提前升级到 v1.10,这样能保证整个升级过程尽量平滑。

资源升级

从 10 开始,Cocos Creator 对底层资源类型进行了重构,大多数项目不受影响,但有些项目可能会收到一些警告,详情请查阅[v1.10 资源升级指南]

 编辑器

  • 大幅优化发布后的js 文件体积。
  • 在文件夹对应的属性检查器中添加了脚本分包设置。
  • 允许每个项目单独设置自定义引擎。
  • 在层级管理器中增加节点锁定功能,当鼠标移到节点上,左侧会有一个锁定按钮,节点锁定后无法在场景编辑器内选中该节点。
  • 在 Prefab 资源文件的属性检查器中,增加了“优化策略”选项,用于优化 Prefab 创建时间。详见 [预制资源:设置优化策略]
  • 优化 Windows 下的主菜单。
  • 为构建面板中的场景列表增加自动刷新功能。
  • 发布到原生平台时,同样支持在文件命名中添加 MD5,方便进行热更新。
  • 脚本编译将自动跳过所有 .d.ts 文件,避免 TypeScript 报错。
  • Console 面板增加了 Clear on Play 选项,用于在游戏预览前,自动清空日志。
  • 调整 Console 面板的文本字体和颜色。
  • 在层级管理器和资源管理器的搜索栏中加入了搜索选项按钮。
  • 在插件商店中新增了已装插件管理功能。
  • 允许更改控件库中的自定义控件图标。
  • 资源管理器增加对 aac 和 pcm 扩展名音频文件的识别。
  • 支持在资源管理器搜索 uuid 时直接搜索压缩后的 uuid 格式。
  • 允许使用鼠标右键拖拽 Timeline 编辑器的时间轴。
  • 在 Dashboard 的系统托盘图标上增加了退出菜单。

 引擎

  • 支持游戏脚本分包加载,详见[代码分包加载]
  • Widget 组件新增 align mode 属性,设置为 ON_WINDOWS_RESIZE 后将在窗口大小改变时自动刷新。
  • 正式支持了[文本][JSON] 资源类型的加载。
  • 原生平台增加了 [cc.sys.getBatteryLevel] 和 [cc.sys.getNetworkType] 接口,用于获取设备电量和网络状态。
  • 原生平台热更新时,将会主动把旧版的资源文件删掉。
  • VideoPlayer 增加音量调节和静音功能。
  • 增加 DragonBones 原生平台绑定接口 `getSlots `, `replaceSlotDisplay` 和 `Slot.name`(感谢 @feijing566)。
  • TiledMap 支持 Web 平台上任意方向的正交(ortho)地图的渲染裁剪。
  • Layout 组件将只对 active 的节点进行排版。
  • 默认在安卓 UC 浏览器上启用 retina 渲染。
  • 在 UC 浏览器 11 版本以上启用 Webgl。
  • 增加对 UCBS 浏览器的识别。
  • 重力感应调整为只在开发者有注册事件时才进行获取。

 Bug Fixes

  • [Editor] 修复设置图集中的 SpriteFrame 时的卡顿。
  • [Editor] 修复模拟器配置保存相关问题。
  • [Editor] 修复模拟器输出到 Console 的错误信息显示成白色的问题。
  • [Engine] 修复资源导出工具在遇到相同的父文件夹名时的错误。
  • [Engine] 修复编辑器下拷贝自动同步的 Prefab 子节点可能出错的问题。
  • [Engine] 修复构建时自动图集中的碎图纹理如果直接被其它资源引用,将会报错的问题。
  • [Engine] 修复插件脚本未正确解析 CC_WECHATGAME 和 CC_QQPLAY 关键字的问题。
  • [Engine] 修复场景切换或者节点销毁时,动画可能没有停止播放的问题。
  • [Engine] [Wechat] 修复某些版本的微信小游戏获取每帧间隔时间的问题。
  • [Engine] [Wechat] 修复安卓微信小游戏上的 RenderTexture 相关问题。
  • [Engine] [QQPlay] 修复 QQ 玩一玩上资源会重复下载的问题。
  • [Engine] 修复 Slider 组件的滑块拖动时位置可能不对的问题。
  • [Engine] 修复音频的 load 事件有可能重复触发的问题。
  • [Engine] 修复用户在 deactivate 节点的同时改变层级的话,没有任何报错的问题。
  • [Engine] 修复 WebView 在一些平台上的 Safari 浏览器中无法隐藏的问题(iOS 9/10 或 Mac)。
  • [Engine] 修正原生平台 BMFont 渲染间距问题。
  • [Engine] 修复在 Canvas 在未勾选 Fit Width 和 Fit Height 时按钮的触摸区域会发生偏移的问题。

升级安卓 SDK

从 v1.10 开始,安卓构建面板中的 API Level 指定的是编译出的 apk 所支持的最低 Android 版本,建议选择 14。`targetSdkVersion`、`compileSdkVersion`、`buildToolsVersion` 都升级到了 26。 如果开发者有其它需要,可以手动修改 `proj.android-studio/app/build.grade` 和 `proj.android-studio/gradle.properties`。

REMOVED

  • 移除了 Eclipse 和 Ant 构建安卓平台的支持
  • 移除了 Chipmunk 的支持
  • 移除了loader.loadRes 直接加载图集中的子 SpriteFrame 的支持,请先加载图集再调用 `atlas.getSpriteFrame(name)`

DEPRECATION

  • 10.0 起,不再推荐使用 Texture2D.releaseTexture,请用 Texture2D.destroy 代替。
  • 8.2 起,不再推荐使用 cc.eventManager,请用 cc.EventTarget 或 cc.systemEvent 代替,原有 API 将在 2.0 移除。
  • 8.2 起,不再推荐使用 cc.inputManager,请用 cc.systemEvent 的相同接口代替,原有 API 将在 2.0 移除。
  • 8.2 起,不再推荐使用 dragonBones.CCFactory.getFactory,请用 dragonBones.CCFactory.getInstance 代替,原有 API 将在 2.0 移除。

 KNOWN ISSUES

  • 在资源管理器中复制粘贴资源时,资源属性仍不会跟着拷贝。(Since 1.9.0)
  • 安卓原生平台不支持播放远程视频。
2018年07月06日
V1.9.3 版本
v1.9.3 是对不久前发布的 v1.9.2 的缺陷修复,主要完善了对微信小游戏及 QQ 玩一玩的支持,建议所有 1.9 用户及时更新引擎版本,获得更好的体验。良好的品质离不开细心的打磨,非常感谢各位开发者通过论坛、GitHub、Cocos 技术服务等渠道提交的 BUG 反馈。

动画编辑器

  • 修复动画编辑器保存动画时,数据有可能不全的问题
  • 修复动画编辑器直接编辑 Texture 动画会报错的问题
  • 修复动画编辑器无法添加 size 下的 width 以及 height 属性的问题

微信小游戏

  • 修复在微信小游戏上只能播放单个音频并且音频播放次数有限的问题
  • 修复微信小游戏音频无法停止的问题
  • 修复 Android 微信小游戏重力感应方向和取值不对的问题
  • 修复微信小游戏中无法提交 TypedArray 格式贴图的问题
  • 修复在旧版微信上帧率显示异常的问题
  • 完善微信小游戏视频播放支持
  • 向下兼容微信小游戏 1.7.4 版本基础库

QQ 玩一玩

  • 修复 QQ 玩一玩上只能播放单个音频并且音频播放次数有限的问题
  • 修复 QQ 玩一玩上游戏加载过程中无法操作引擎对象的问题
  • 修复 QQ 玩一玩粒子播放卡死问题
  • 修复 QQ 玩一玩上半透明文本会渲染成黑色的问题

DragonBones

  • 修复 DragonBones 在原生平台上重复赋值骨骼可能会导致崩溃的问题
  • 修复手动 clear DragonBones 的 TextureData 会报错的问题

其它

  • 修复 Web 和安卓平台的文本框 Input Flag 无效的问题
  • 修复 Label 渲染有关问题
  • 修复 cc.game 的 EVENT_HIDE 和 EVNET_SHOW 回调可能会被多次调用的问题
2018年05月31日
V1.9.2 版本
v1.9.2 是对不久前发布的 v1.9.1 的小幅升级,主要提升了对微信小游戏及 QQ 玩一玩的支持,建议所有需要上微信小游戏或 QQ 玩一玩的项目进行升级。  

注意事项:

  • 该版本修复了之前 ZERO 混合模式无效的问题,如果升级后发现有图片颜色不对,请检查 Sprite 组件的混合模式是不是被设成了 ZERO,是的话改回默认值即可。
  • 该版本重写了动画编辑器,如果有遇到相关错误,麻烦到论坛反馈,我们会尽快进行修复。

详细改动如下:

Features

  • [Editor] [Timeline] 动画编辑器可对 “丢失的节点” 进行编辑,并且允许迁移节点数据;
  • [Editor] [Timeline] 动画编辑器支持同时复制粘贴多个节点上的关键帧;
  • [Editor] [Timeline] 动画编辑器若干体验优化;
  • [Editor] 将 QQ 玩一玩和微信小游戏的适配层代码放置到编辑器的 Contents/Resources/builtin 目录下,方便用户升级;
  • [Engine] 升级 Facebook Instant Games SDK 到 6.2;
  • [Engine] 优化 Label 在非原生平台的内存占用。

微信小游戏

  • 修复微信小游戏 AudioSource 组件在销毁时可能会报错的问题;
  • 优化微信小游戏上声音的实现;
  • 在微信小游戏的 game.json 中改用 `openDataContext` 定义开放数据域,开放数据域的入口文件改为 `index.js`;
  • 修复微信开放数据域中加载远程资源的问题;
  • 修复微信小游戏上加载 plist 粒子时可能会出现的报错;
  • 修复微信小游戏中调用 cc.RenderTexture.create 导致的 gl.texImage2D 报错;
  • 修复在旧版本上微信获取微信小游戏开放数据域时的报错;
  • 允许在微信小游戏的开发者工具上模拟通过 `cc.sys.os` 获取的系统信息;
  • 修正在旧版本微信上无法正确识别子域的问题。

 QQ 玩一玩

  • 优化 QQ 玩一玩上声音的实现;
  • 修复 QQ 玩一玩在 iOS 10 以下蓝屏的问题;
  • 修复 QQ 玩一玩上加载 plist 粒子时可能会出现的报错;
  • 修复在 Windows 下发布到 QQ 玩一玩 时插件脚本加载异常;
  • 完善 QQ 玩一玩的 XMLHttpRequest 的 header 处理;
  • 完善 QQ 玩一玩的 userAgent;
  • 修正 QQ 玩一玩文本描边效果。

Bug Fixes

  • [Editor] 修复 AudioSource 和 MotionStreak 组件的文档链接;
  • [Editor] 修复编辑器预览动画时,如果动画对节点的 active 进行修改有可能报错的问题;
  • [Editor] 修复在登录服务器宕机时无法进入编辑器的问题;
  • [Editor] 修复多次拖到同一个 prefab 作为其它 prefab 的子节点会报错的问题;
  • [Engine] 修复 Web 平台上无法将 Sprite 的 blend mode 设置为 ZERO 的问题;
  • [Engine] 修复了 cc.sequence 中嵌套其它调用过 repeat 方法的 action 时在特殊情况下会导致速度不正常的问题;
  • [Engine] 修复场景切换后可能导致 Sprite 报错的问题;
  • [Engine] [JSB] 解决在 JS 层创建 cc.GLProgram 并添加进 cc.shaderCache 后出现触发断言的问题;
  • [Engine] [JSB] 修复原生平台物理引擎绑定问题;
  • [Engine] [Native] 修正原生平台上 cc.Sprite.FillType 枚举类型错误;
  • [Engine] [UI] 修复当滚动视图同时启用垂直、水平滚动,并且内部尺寸过小时可能引起的定位问题;
  • [Engine] [Audio] 修复重复调用 audioEngine.resume 会从头播放的问题。
2018年04月20日
V1.9.1 版本
v1.9.1 版本是对不久前发布的 v1.9.0 的一次小幅升级,主要提升了对微信小游戏及 QQ 玩一玩的支持。

详细改动如下:

微信小游戏


- 支持将整个项目发布到微信小游戏子域,详见[文档](http://docs.cocos.com/creator/manual/zh/publish/publish-wechatgame-sub-domain.html)。
- 支持微信小游戏在构建面板中配置 **远程服务器地址** 选项,方便下载远程资源
- 支持在微信小游戏真机上使用 TTF 字体
- 把微信小游戏的适配层从 ES6 转成 ES5,用户可以不启用 ES6 转 ES5
- 修复微信小游戏中潜在的音频内存泄漏

QQ 玩一玩


- 支持 QQ 玩一玩在构建面板中配置 **远程服务器地址** 选项,方便下载远程资源。
- 修复 QQ 玩一玩上 XMLHttpRequest 的一些小 bug
- 修复 QQ 玩一玩构建时无法解析 js 路径的问题
- 完善 QQ 玩一玩上多点触摸的支持
- 增加 QQ 玩一玩对 base64 编码图片的支持
- 完善 QQ 玩一玩适配层
- 完善 QQ 玩一玩的音频支持
- 修复 QQ 勾选 MD5 Cache 后的黑屏问题

其它更新


- [Editor] [Build] 修复定制项目构建模板功能在 Facebook Instant Games 平台不生效的 bug
- [Editor] [Build] 添加 build-start 事件,方便用户构建之前做一些自己想要做的处理
- [Engine] [Wechat] 修复微信小游戏音频无法停止的问题
- [Engine] [iOS] 修复 iOS 8-9 上面 isTypedArray 方法失效的问题
- [Engine] [Web] 修复粒子系统还未激活就移除的话会导致内存泄露问题
- [Engine] cc.isValid 增加了一个可选参数,传入 true 将在 destroy 的当帧开始就返回 false
- [Engine] [Android] 修复 jni 上的一个内存泄露问题

 DEPRECATION


- v1.8.2 起,不再推荐使用 cc.eventManager,请用 cc.EventTarget 或 cc.systemEvent 代替,原有 API 将在 2.0 移除。
- v1.8.2 起,不再推荐使用 cc.inputManager,请用 cc.systemEvent 的相同接口代替,原有 API 将在 2.0 移除。
- v1.8.2 起,不再推荐使用 dragonBones.CCFactory.getFactory,请用 dragonBones.CCFactory.getInstance 代替,原有 API 将在 2.0 移除。

KNOWN ISSUES


- 在资源管理器中复制粘贴资源时,资源属性仍不会跟着拷贝。(Since 1.9.0)

QQ 玩一玩已知问题:

目前 QQ 玩一玩仍在灰度测试中,开发者也需要获取内测资格才能进行开发,而且暂时仅支持在 Mac 上进行编译。此外,我们对 QQ 玩一玩的适配工作还未完全结束,目前仍不支持以下模块:
- Label:不支持 TTF,系统字体也只能使用默认字体
- 粒子系统:不支持 plist 中存储贴图数据,只支持贴图 URL
- WebView
- VideoPlayer
- DeviceMotion
以上功能预计在以后的更新中逐个支持。我们也将持续与玩一玩工程师们紧密沟通,不断优化适配效果。
2018年03月14日
V1.9 版本
美国时间 3 月 14 日 Facebook 正式对外开放 Instant Games 平台,给所有开发者一个公平的机会可以进入和拓展海外市场。Cocos 引擎作为 Facebook Instant Games 平台的官方合作伙伴,不仅仅在技术接入方面深度合作,游戏开发上支持一键发布游戏;在内容引进方面,更是国内首家 Facebook 官方授权的 Instant Games 游戏接入合作商。所以本次发布的 v1.9.0 正式版本既是对  v1.8.2 的一次功能更新,提升了编辑器的易用性,修复了一些功能缺陷,更主要增加了 Facebook Instant Games 及 QQ 玩一玩的支持,该版本目前已经完整实现三大平台一键平滑支持。建议所有开发中的项目进行升级。

详细改动列表如下:


 Features
- 支持 Facebook Instant Games,[详见文档](http://docs.cocos.com/creator/manual/zh/publish/publish-fb-instant-games.html)
- 支持 QQ 玩一玩,[详见文档](http://docs.cocos.com/creator/manual/zh/publish/publish-qqplay.html)
- [Editor] 资源管理器直接支持复制粘贴资源(可通过右键菜单或快捷键)
- [Editor] 在场景编辑器的 Rect 编辑模式下,支持拖动节点的空白区域,便于更改 anchor 的值
- [Editor] 在粒子组件的属性检查器上新增“同步”按钮,点击同步将把 Custom 参数设为和 File 一致。(同步按钮仅在勾选 Custom 并且设置了 File 时才可用)
- [Editor] 在 Timeline 中增加 scale 属性,便于同时编辑 scaleX 和 scaleY
- [Engine] PhysicsManager 新增 FIXED_TIME_STEP 和 MAX_ACCUMULATOR 两个参数
Bug Fixes
- [Engine] [Web] 修复在部分小米自带浏览器上输入框无法弹出的问题
- [Engine] 修复勾选 MD5 构建后音频可能无法停止的问题
- [Engine] 修复 Label 的描边可能被截断一个像素的问题
- [Engine] 修复 cc.Class 构造函数中的异常无报错信息的问题
- [Engine] [Animation] 修复当 Animation 组件切换动画或手动设置 AnimationState 时间后,会少播放一帧的问题
- [Engine] [Wechat] 修复 iOS 微信小游戏本地代码包超过 4MB 后使用远程服务加载会失败的问题

DEPRECATION
- v1.8.2 起,不再推荐使用 cc.eventManager,请用 cc.EventTarget 或 cc.systemEvent 代替,原有 API 将在 2.0 移除。
- v1.8.2 起,不再推荐使用 cc.inputManager,请用 cc.systemEvent 的相同接口代替,原有 API 将在 2.0 移除。
- v1.8.2 起,不再推荐使用 dragonBones.CCFactory.getFactory,请用 dragonBones.CCFactory.getInstance 代替,原有 API 将在 2.0 移除。

KNOWN ISSUES
- 在资源管理器中复制粘贴资源时,资源属性仍不会跟着拷贝。(Since 1.9.0)
- 在原生平台上,调用 `action.easing(cc.ease***)` 方法的话,可能会引起节点逻辑数据不同步。请改用 `cc.ease***(action)`。(Since 1.8.2)

QQ 玩一玩已知问题:


目前 QQ 玩一玩仍在灰度测试中,开发者也需要获取内测资格才能进行开发,而且暂时仅支持在 MacOS上进行编译。此外,我们对 QQ 玩一玩的适配工作还未完全结束,目前仍不支持以下模块:
- Label:不支持 ttf,系统字体也只能使用默认字体
- 粒子系统:不支持 plist 中存储贴图数据,只支持贴图 url
- WebView
- VideoPlayer
- DeviceMotion

其他详细功能请参考 v1.8.2 功能列表。以上暂未支持功能预计在今后的更新中逐个实现,我们也将持续与玩一玩工程师们紧密沟通,不断优化适配效果。
2018年03月09日
V1.8.2 版本
做为年后推出的第一个正式版本,虽然是小版本,重在修复上个版本遗留 bug,但我们还是诚意满满的做出了如下重点改动:完善微信小游戏支持、修复了这些 bug:包括 iOS 平台崩溃问题、用 OBB 替换 AABB 的包围盒检测方式、touch cancel 事件问题等,推荐正准备使用 Creator 的新用户直接开搞 v1.8.2,老用户请记得优化升级!

更新说明


- 完善微信小游戏的支持
- 修复部分 iOS 平台崩溃问题
- 引擎场景点选所用的 hit test 包围盒检测方式由 AABB 改为 OBB,提高了对旋转后节点的点选精度
- 修复引擎没有处理 touch cancel 事件问题
- 修复一些较老的台式机上使用 Chrome 运行帧率低的问题

详细改动列表


微信小游戏
1、在唤起微信开发者工具的时候,监听错误信息并提示给用户
2、提供默认的游客 appid,方便开发者进行测试
3、修复不支持加载远程路径的问题
4、修复文件夹不存在导致 fs.save 失败的问题
5、修复自带的 TypeScript Hello World 工程在微信小游戏上的 Promise 问题  

FEATURES
[Engine] 场景点选所用的 hit test 包围盒检测方式由 AABB 改为 OBB,提高了对旋转后的节点的点选精度
[Editor] 调整项目设置中的设计分辨率有关选项  

BUG FIXES
[Editor] 修复在 Timeline 内右键点击 event 然后点击 delete,无法真正删除的问题
[Editor] 修复默认新建的脚本中若干错误
[Editor] 修复 Windows 平台 creator.d.ts 中 `__ctor__` 引起的乱码
[Engine] 修复引擎没有处理 touch cancel 事件的问题
[Engine] 修复节点层级改变后注册的事件有可能丢失的问题
[Engine] [Web] 修复在一些较老的台式机上使用 Chrome 运行时帧率很低的问题
[Engine] [UI] 修复 EditBox 限制长度时如果使用某些中文输入法的话会导致输入到一半被截断的 bug
[Engine] [Physics] 修复 RigidBody.allowSleep 未能正确设置的错误
[Cocos Analytics] 修复原生平台未启用 Cocos 数据统计 SDK 仍会提示未初始化的问题
[Engine] [Web] 修复 Windows 发布的 Web 项目可能有性能问题
[Engine] [Web] 修复音频在加载过程中被 stop 而后 play 无法播放的问题
[Engine] [Web] 修复 render texture 截图可能不完整的问题
[Engine] 修复 cc.path.dirname 错误的返回值
[Engine] 修复在 schedule 回调中 unschedule 和再次 schedule 当前回调函数触发的 JS 异常问题
[Engine] [Android] 修复安卓上 VideoPlayer 无法重复 play 的问题
[Engine] [Native] 修复 DragonBones 重启游戏时的内存泄露问题
[Engine] [Native] 修复 Spine 的 SkeletonRenderer 的内存泄露问题
[Engine] [Native] 修复 cc.Scheduler.schedule 不支持只传入 3 个参数的问题
[Engine] [Native] 修复 JS 浮点数转换到字符串时出现多余的 0 的问题
[Engine] [Native] 移除原生平台部分多余的 lineHeight 警告
[Engine] [Native] 修复原生平台未定义 cc.Scheduler.pauseAllTargets 和 cc.Scheduler.pauseAllTargetsWithMinPriority 的问题
[Engine] [Native] 修复 Windows、Mac 平台上鼠标滚轮事件不触发的问题
[Engine] [Native] 解决原生平台低概率的 WebSocket 关闭时的崩溃问题
[Engine] [Native] 解决退出游戏时的低概率崩溃问题
[Engine] [Native] 解决使用 cc.spawn 导致的潜在崩溃问题
[Engine] [Native] 解决 Node 关联的 Action 无法被释放的内存泄露
[Engine] [iOS] 解决 iOS 平台上 JS 代码异常导致低概率的异常处理过程中的崩溃问题
[Engine] [iOS] 解决 iOS 平台上调用 cc.callFunc 时的低概率崩溃问题
[Engine] [iOS] 解决 iOS 平台上创建 cc.Sequence 时的低概率崩溃问题
[Engine] [Native] 解决原生平台频繁修改 button 的 interactable 时的潜在崩溃问题

PERFORMANCE IMPROVEMENTS
[Engine] [JSB] 优化原生平台导出的 jsb_polyfill 脚本体积  

DEPRECATION
不再推荐使用 cc.eventManager,请用 cc.EventTarget 或 cc.systemEvent 代替,原有 API 将在 2.0 移除。

不再推荐使用 cc.inputManager,请用 cc.systemEvent 的相同接口代替,原有 API 将在 2.0 移除。

不再推荐使用 dragonBones.CCFactory.getFactory,请用 dragonBones.CCFactory.getInstance 代替,原有 API 将在 2.0 移除。
 
BREAKING CHANGES
cc.Texture2D.initWithData 方法不再支持传入最后一个可选参数 contentSize。
 
KNOWN ISSUES
在原生平台上,调用 `action.easing(cc.ease***)` 方法的话,可能会引起节点逻辑数据不同步。请改用 `cc.ease***(action)`。
 

MAC数字证书升级


111wechatimg80   222wechatimg81
  如果 Mac 版下载后无法打开,提示 dmg 或者 app 文件已损坏,或者来自身份不明的开发者,这是因为我们升级了数字证书引起。

解决方法在 Finder(访达)中右键点击 dmg 或 app 文件,选择“打开”,然后在弹出对话框中再次点击打开即可。为了下一次可以直接打开,请进入系统偏好设置 -> 安全性与隐私,点击“仍要打开”。

如果这样操作仍无法打开,请联系我们。变通方法是先命令行里执行 sudo spctl --master-disable,再验证账户密码,就能打开了。

  有任何安装、升级、使用过程中出现的问题,欢迎直接到社区 forum.cocos.com/c/Creator 发帖提交反馈。当然如果你希望轻轻松松无需做任何平台移植工作就能一键编译发布到微信小游戏调试环境,那么记得在今天下载 Cocos Creator v1.8.2 试试吧!
2018年01月18日
V1.8.1 版本
引擎团队秉承发布小版本重在修复而不是增加大功能的一贯理念,本次发布的 v1.8.1 版本主要在 1.8 的基础上修正 bug、完善微信小游戏支持,修复了一些原生平台崩溃问题,建议所有开发中的项目进行升级。

详细改动列表如下:

微信小游戏
[Editor] 发布到微信小游戏时,默认禁用 ES6 to ES5 选项
[Engine] 修复 1.8.0 网页中无法引入微信 jssdk,会导致环境误判的问题
[Engine] 修复在微信小游戏上前后台切换时,EVENT_SHOW, EVENT_HIDE 不会触发的问题

特色功能
[Editor] 在 Windows 上双击脚本时先提示用户设置脚本编辑器,避免系统默认 Host 弹出报错
[CocosStudio] 完善 CocosStudio 项目导入
- 不再为 Position 为 0% 的节点添加 Widget 组件
- 支持导入动画帧事件
- 修复导入多层嵌套的动画不能正确关联的问题
[Engine] 新增获取 iPhone X safe area 的接口(cc.view.getSafeAreaRect 和 cc.director.getSafeAreaRect)
[Engine] 自动隐藏原生 iPhone X 的 home indicator ----

另外,上面的改动大部分包含在了之前社区里发布的 v1.7.2 补丁版。
http://forum.cocos.com/t/cocoscreator-1-7-2-1-10/54934
相比 1.7.2,v1.8.1 除了支持微信小游戏以外,还新增了以下改动:
[Editor] 修复特殊情况下发布后的项目 JS 会包含无效符号的问题
[Engine] 修复 creator.d.ts 中 __ctor__ 引起的乱码
[Engine] 修复原生平台上 TiledMap 潜在的内存释放问题
[Engine] 修复原生平台 invokeJSTouchOneByOneCallback 内潜在的崩溃问题
[Engine] [JSB] 修复 1.7.0 以后原生平台上 TiledMap 未绑定 getTiles 接口的问题
[Engine] [JSB] 修复 JS 获取原生的 Scheduler, ActionManager, EventDispatcher 等对象后有概率会崩溃的问题
[Engine] [JSB] 修复 event.stopPropagation() 会停止所有 touch point 的问题
[Engine] [JSB] 在 TextureCache 中添加回调函数用于通知纹理加入缓存与从缓存中移除
[Engine] [JSB] 修复 iOS 在极端情况下的崩溃问题
[Engine] [JSB] 修复在 iOS 9 以下 createTypedArray 返回 null 的问题
[Cocos Analytics] 升级数据统计 SDK 到 1.0.5,解决 iOS Cocos Analytics 中的 BaseEvent 类与其它第三方库冲突的问题
Bug 修复
[Editor] 修复特殊情况下发布后的项目 JS 会包含无效符号的问题
[Engine] 修复 creator.d.ts 中 `__ctor__` 引起的乱码
[Engine] 修复原生平台 invokeJSTouchOneByOneCallback 内潜在的崩溃问题
[Engine] [JSB] 修复 JS 获取原生的 Scheduler, ActionManager, EventDispatcher 等对象后有概率会崩溃的问题
[Engine] [JSB] 修复原生平台 event.stopPropagation() 会停止所有 touch point 的问题
[Engine] [JSB] 修复 iOS 在极端情况下的崩溃问题
[Engine] [JSB] 修复在 iOS 9 以下 createTypedArray 返回 null 的问题
[Engine] [JSB] 修复 1.7.0 以后原生平台上 TiledMap 未绑定 getTiles 接口的问题
[Engine] 修复原生平台上 TiledMap 潜在的内存释放问题
[Editor] 修复场景编辑器错误的分布图标
[Editor] 修复 Windows 下 MD5 Cache 会修改用户代码的问题
[Engine] 修复 physics AABB 碰撞回调
[Spine] 修复 spine 在调试模式下激活时会重复创建渲染对象的问题
[Camera] 修复 camera 在原生平台上未激活时就启用的问题
[Engine] 修复模块裁剪时只勾选 Intersection 的情况下获取不到 Intersection 的问题
[Engine] 修复 ScrollView 被缩放后效果错误
[Engine] 修复 RenderTarget 缩放问题
[Engine] 修复 PageView.scrollToPage 不能正确判断范围的问题
[TiledMap] 修复 Tilemap 的 layer 没有元素时的报错
[DragonBones] 修复 Web 平台上 DragonBonesData 名字相同,骨骼数据不同时无法正确加载的问题
[Engine] 修复 Component.schedule 有可能引发 “element's paused should be paused” 报错的问题
[Engine] 修复鼠标事件冒泡相关问题
[Engine] [JSB] 修复 1.7.0 中原生平台未能调用 opengl 和 glNode 接口的 bug
[Engine] [JSB] 修复 JSB 2.0 中的一些相关问题
[Engine] [JSB] 修复原生平台 Scheduler.isTargetPaused 在 JS 中未定义的问题
[Engine] [JSB] 完善 jsb.reflection.callStaticMethod 支持的参数类型
[Engine] 移除安卓平台 x86 架构下的 SSE 支持,以便修复部分安卓模拟器上的运行问题
[Engine] 修复安卓 APP_PLATFORM >= 22 时的编译错误
[Engine] 修复 Layout 的子节点顺序改变后未能刷新排序的问题
[Engine] 修复场景常驻节点在原生平台 z order 失效的问题
[Engine] 修复原生平台 ResizableBufferAdapter::resize 有关问题
[Engine] 修复原生平台 socketio.emit 不传递 payload 参数时导致的异常
[Engine] 修复原生平台 XMLHttpRequest 在超时的时候调用 onerror 而不是 ontimeout 的问题
[Engine] [JSB] 修复原生平台 jsb.reflection.callStaticMethod 找不到类时的潜在内存泄露(Fixes potential memory leak if can't find class by jsb.reflection.callStaticMethod.)
[Engine] 解决安卓 conversionEncodingJNI 内存泄露问题
[Engine] 解决安卓 onWavClose 没有返回值的警告问题
[Engine] 解决安卓长时间在后台且 Activity 被系统回收后切换前台导致的崩溃问题
[Cocos Analytics] 解决 iOS 链接 Cocos Analytics 产生很多 deployment target 不匹配警告的问题
[Cocos Analytics] 升级数据统计 SDK 到 1.0.5,解决 iOS 中的 Reachability 和 BaseEvent 类与其它第三方库冲突的问题
[TiledMap] 修复由深度检测引起的 TiledMap 渲染异常
[Engine] 修复网页平台同时勾选 Fit Height 和 Fit Width 后的适配问题
[UI] 修复删除 Button 所用的 SpriteFrame 后引起的相关报错
[UI] 完善 UI 文本自动换行规则
[DragonBones] 修复龙骨事件丢失的问题

性能优化
[Build] 大幅优化原生平台启用脚本加密后的脚本体积

弃用
[UI] 添加 cc.ToggleContainer 组件,v2.0 中将会取代 cc.ToggleGroup。

详见文档
github.com/cocos-creator/creator-docs/blob/master/zh/components/toggleContainer.md



最近微信小游戏正搞得沸沸扬扬,发布 20 多天即达到了 3.1 亿用户。而且微信方面称,“请大家在未来的一个月内随时关注 mp.weixin.qq.com ”,也许这意味着小游戏很有可能将于一个月内开放注册。

那么,为了把握住这一波浪潮,赶紧试着用「微信小游戏首发占半数的引擎」 Cocos Creator 最新版做一款小游戏吧!
2017年12月28日
V1.8 版本
早在微信官方正式发布小游戏平台之前,Cocos Creator 团队就和微信开发团队合作完成了 Cocos Creator 对微信小游戏平台的支持。在小游戏正式公布之后,我们也在第一时间发布了完美支持小游戏的 Cocos Creator v1.8。这篇文档的初衷也是希望帮助开发者们在第一时间以最顺畅的方式提交游戏到小游戏平台。

1

这篇文档将会覆盖:
1、小游戏的运行环境介绍
2、如何使用 Cocos Creator 发布微信小游戏
3、小游戏资源管理
与这篇文档搭配的还有一段教学视频,可以结合视频中的操作来理解,更加直观。
https://v.qq.com/x/page/c05255stri7.html

微信小游戏平台


微信小游戏是微信小程序下的游戏产品平台,它不仅提供了强大的游戏能力,还和小程序一样,提供了大量的原生接口,比如支付,社交,文件系统,照片,NFC 等。相当于同时结合了 WEB 易于传播以及 Native 功能丰富的优势。

小游戏的运行环境是小程序环境的扩展,基本思路也是封装必要的 WEB 接口提供给用户,尽可能追求和 WEB 同样的开发体验。小游戏在小程序环境的基础上提供了 WebGL 接口的封装,使得渲染能力和性能有了大幅度提升。不过由于这些接口都是微信团队通过自研的原生实现封装的,所以并不可以等同为浏览器环境。关于游戏方面,目前小游戏环境提供了 Canvas 以及 WebGL 的渲染接口,所以 Cocos Creator 引擎的两种渲染模式都是可以运行的,不过出于性能的考量,我们默认使用 WebGL 渲染游戏内容,强烈建议用户不要修改默认配置。

作为引擎方,为了尽可能简化开发者的工作量,我们为用户完成的主要工作包括:

1、引擎框架适配微信小游戏 API,纯游戏逻辑层面,用户不需要任何额外的修改
2、Cocos Creator 编辑器提供了快捷的打包流程,直接发布为微信小游戏,并自动唤起小游戏的开发者工具
3、自动加载远程资源,缓存资源以及缓存资源版本控制

除此之外,小游戏平台的游戏提交,审核和发布流程和小程序是没有区别的,都需要遵守微信团队的要求和标准流程,具体信息可以参考文末的链接。

使用 Cocos Creator 发布微信小游戏


我们从 Cocos Creator v1.8 开始,支持 Cocos Creator 游戏一键发布为微信小游戏,下面是详细的发布步骤:
1、在微信公众平台下载微信开发者工具

2、在 "Creator 偏好设置" > "原生开发环境" 中设置微信开发者工具路径
2
3、登陆微信公众平台,找到 appid
4
4、在构建面板中设置项目名和 appid
p3
5、构建发布
6、点击 play 打开微信开发者工具
wechatimg16
7、预览部署
按照这样的流程,项目的 build 目录下就会生成一个微信小游戏的发布包,其中已经包含了微信小游戏环境的配置文件:game.json 和 project.config.json

7

小游戏环境的资源管理


在小游戏环境中,资源管理是最特殊的部分,它和浏览器的不同在于下面四点:
1、小游戏的包内体积不能够超过 4mb,包含所有代码和资源,额外的资源必须通过网络请求下载。
2、对于从远程服务器下载的文件,小游戏环境没有浏览器的缓存以及过期更新机制。
3、对于小游戏包内资源,小游戏环境内并不是按需加载的,而是一次性加载所有包内资源,然后再启动页面。
4、不可以从远程服务器下载脚本文件。

这里引出了两个关键的问题,首页面加载速度和远程资源缓存及版本管理。对于首页面加载速度,我们建议用户只保存脚本文件在小游戏包内,其他资源都从远程服务器下载。而远程资源的下载、缓存和版本管理,其实在 Cocos Creator 中,已经帮用户做好了。下面我就来解释一下这部分的逻辑。

在小游戏环境中,我们提供了一个 wxDownloader 对象,给它设置了 REMOTE_SERVER_ROOT 属性后,引擎下载资源的逻辑就变成:
1、检查资源是否在小游戏包内
2、不存在则查询本地缓存资源
3、如果没有缓存就从远程服务器下载
4、下载后保存到小游戏应用缓存内供再次访问时使用

同时,当开启引擎的 md5Cache 功能后,文件的 url 会随着文件内容的改变而改变,这样当游戏发布新版本后,旧版本的资源在缓存中就自然失效了,只能从服务器请求新的资源,也就达到了版本控制的效果。

具体来说,开发者需要做的是:
1、构建时,勾选 md5Cache 功能。
2、将小游戏发布包中的 res 文件夹完整得上传到服务器。
3、删除发布包内的 res 文件夹。
4、在 main.js 中,找到对应代码段并添加 REMOTE_SERVER_ROOT 的设置
%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2017-12-28-%e4%b8%8a%e5%8d%8811-31-50
5、对于测试阶段来说,可能你无法部署到正式服务器上,需要用本地服务器来测试,那么请在微信开发者工具中打开详情页面,勾选项目设置中的 不检验安全域名、TLS 版本以及 HTTPS 证书 选项。
8

平台 SDK 接入


除了纯游戏内容以外,其实微信小游戏环境还提供了非常强大的原生 SDK 接口,其中最重要的就是用户、社交、支付等,这些接口都是仅存在于微信小游戏环境中的,等同于其他平台的第三方 SDK 接口。这类 SDK 接口的移植工作在现阶段还是需要开发者自己处理。下面列举一些微信小游戏所提供的强大 SDK 能力:
1、用户接口:登陆,授权,用户信息等
2、微信支付
3、转发以及获得转发信息
4、文件上传下载
5、媒体:图片、录音、相机等
6、其他:位置、设备信息、扫码、NFC、等等
2017年11月28日
V1.7 版本
Cocos Creator 全新版本,此次新增了 JSB 2.0 大幅优化原生平台的性能、一键导出到 Cocos2d-x(支持 C++ 和 Lua 原生游戏开发工作流)、支持原生平台的功能模块裁剪减小包体和集成数据统计等更加方便游戏开发的亮点功能。  

亮点功能

1、JSB 2.0,原生平台性能提升

  • 支持平台原生 JS 引擎,减小 iOS 包体 5M
  •  性能大大提升,iOS 平台 JS 执行提升 5 倍
  •  分代垃圾回收(Generational GC),避免卡顿
  • 支持所有原生平台调试,使用上更加高效
  •  完全抽象的绑定层 API,后续JS引擎升级更加便捷无感知
首先,Cocos Creator 原生平台的基础架构和 Cocos2d-x 一脉相承,框架上是没变化的:在 Cocos2d-x C++ 引擎的基础上,通过 JS Virtual Machine 来支持 JS 脚本的执行,同时通过 JSB 绑定技术暴露 C++ API 到 JS 层使得 JS 代码可以调用引擎 API。 在 v1.6 以及之前版本中,Cocos Creator 一直使用 SpiderMonkey 作为内置的 JS VM,并且一直直接使用 SpiderMonkey 的 API 来实现绑定层代码。这点在 v1.7 中发生了重大的改变,我们将内置的 JS VM 切换为 V8 以及 JavaScriptCore(JSC),根据发布平台自动切换,并且抽象统一了绑定层的 API,让不同的 JS VM 可以无缝切换。 如果有人不清楚这三者的区别,SpiderMonkey 是 Firefox 中的 JS VM,V8 是 Chrome 的,JSC 是 Safari 的。 调试方法请参考 JSB 绑定和调试教程 https://github.com/cocos-creator/creator-docs/blob/master/zh/advanced-topics/jsb/JSB2.0-learning.md#远程调试与-profile p2

JSB 2.0架构图

2、Cocos2d-x 导出,支持 C++ & Lua 原生游戏工作流

Cocos2d-x 导出插件能够将采用 Cocos Creator 制作的游戏场景数据导出并给 Cocos2d-x 工程, 它包含两部分内容: 首先,它是 Cocos Creator 插件,该插件把用 Cocos Creator 制作的场景导出为 .ccreator 文件 其次,它包含了可以解析 .ccreator 文件的 reader,该 reader 可以用在 Cocos2d-x 的 C++/lua 工程里     p3 使用流程: 直接从 Cocos 插件商店下载 http://store.cocos.com/stuff/show/178912.html  

3、Cocos Analytics - 数据统计

Creator v1.7 集成了数据统计支持,只需要进行简单的设置就能够开启,在游戏开发过程中快速接入统计功能。为您提供符合行业标准的运营分析指标,简单而实用。目前是 Beta 版本,在不断的完善中。有了 Cocos Analytics 的及时便捷地监测游戏生命周期中的运营状况,让您可以更精准地进行游戏运营。   Cocos Creator一键集成数据统计的 SDK,目前支持网页预览以及发布到 Web,iOS 和安卓平台。   使用方法: 打开 “项目设置” 面板,位于菜单栏 – “项目” – “项目设置”,在 “服务” 一栏可以勾选 Cocos 数据统计的配置项:   p4 打开后台:
点击后将跳转到数据统计后台,方便查看统计结果。 AppID 和 AppSecret:
请填入在后台申请的帐号信息,默认为公用帐号。 channel 和 version:
请填入渠道 ID 和版本号。这两个参数可以自己任意设置,只要自己在获取统计结果时能够区分就行。在原生平台上,渠道 ID 如果为空并且由 AnySDK 打包,启动时就会自动读取 AnySDK 打包后的渠道 ID。 游戏加载后,统计 SDK 会在项目构建后的 main.js 文件中初始化,并且传入上面设置的参数。如果有批量发布的需要,也可以手动在 main.js 中修改这些参数。初始化后,你就能直接调用统计的 SDK,发送各种统计数据给服务器。  

4、原生平台模块裁剪,便捷高效减小原生游戏包体

原先 Creator 的模块裁剪只支持 Web 平台,从 v1.7 开始新增对原生平台的支持。用户在项目设置里剔除的模块,对应的 C++ 代码也会被剔除,方便快捷减小原生平台的包体。   p5

原生平台模块截图

完整改动列表

  • [Editor] 插件脚本的"允许编辑器加载"被禁用时,内部不显示打勾状态
  • [Build] 增加 iPhone X 屏幕分辨率支持
  • [Build] 项目模块设置支持原生引擎裁剪,有效降低空包大小
  • [Build] 构建原生平台时允许禁用脚本加密
  • [ProjectSettings] 增加「服务」选项卡,可在此填写 Cocos 数据分析 的关键信息配置
  • [ProjectSettings] 保存项目设置时增加数据合法性验证
  • [TypeScript] 升级 TypeScript 编译器到 2.4.2
  • [Editor] 完善新建脚本的模板
  • [Editor] 优化资源管理器文件排序
  • [Editor] 资源管理器新建节点后立即进入更改文件名状态
  • [Console] 支持设置 line height 和 font size 更改 log 展示效果
  • [Engine] 在用户错误释放了仍可能被用到的资源时给出详细提示
  • [Engine] 支持鼠标事件冒泡
  • [Engine] 支持和 WebView 互操作
  • [Engine] 支持动态修改 cc.macro.ENABLE_CULLING
  • [Engine] 提供原生平台 RenderTexture 的 saveToFile 接口
Bug 修复
  • [Editor] 修复找不到 marked 模块的报错
  • [Editor] 修复部分 Windows 上模拟器找不到 DLL 的问题
  • [Build] 修复构建时 build-template 下的自定义模板文件未能添加 md5 的 bug
  • [Build] 修复 resources 目录下有 TypeScript 脚本时,构建会报错的 bug
  • [Build] 修复 binary 模板使用 VS 进行 debug 模式编译的报错
  • [Engine] 修复 webgl 模式下使用灰度导致透明度丢失的问题
  • [Engine] fix sometime will play twice the audio on WKWebView when requiringUserAction is false
  • [Engine] 修复热更新时目标路径包含中文时出错导致热更新失败的问题
  • [Engine] Stop bail out iOS UIWebView for webgl for iOS 9.
  • [Slider] 修复 CCSlider 的 slide API 工作不正确的问题
  • [Engine] 修复多次用 once 注册相同事件时事件会重复注册的 bug
  • [RichText] 修复RichText使用自定义TTF字体的崩溃问题
  • [EditBox] 修复调用 setText 方法在安卓部分机型可能导致崩溃的问题
  • [EditBox] 修复 EditBox 在手机上弹出虚拟键盘,点击空白地方,会响应其他控件的问题
  • [Properties] 修复一个节点上添加超过10个组件时无法编辑组件属性的问题
  • [Engine] 修复原生平台 WebSocket 实例被 GC 时可能触发 assert 的问题
  • [Engine] 修复 Node.removeFromParent 可能引起内存泄露的 bug
  • [Dashboard] 修复无法在 Dashboard 上复制粘贴的 bug
  • [Engine] 修复原生平台加载贴图可能卡死的 bug
  • [Engine] 修复 DragonBones 监听事件相关 bug
  • [Engine] 修复鼠标事件派发相关 bug
  • [Engine] 修复 PageView 排序错乱
  • [Physics] 修复 testAABB 相关 bug
  • [Engine] 修复有时会出现 there is no texture bound to the unit 0 报错的 bug
  • [Engine] 修复 TiledMap 偶尔会有接缝的 bug(特殊情况下还需手工将 cc.macro.ENABLE_WEBGL_ANTIALIAS 设为 false 才能完全避免)
  • [Engine] 修复原生平台 xhr.send 有关错误
性能提升
  • [Engine] JSB 2.0 正式上线,大幅度优化原生平台运行效率。支持调试,如果有用到手动绑定,务必对绑定代码进行升级。详情请阅读 JSB 绑定和调试教程
  • [Engine] 分离 culling 和 transform 计算步骤,提高性能
  • [Engine] 修复节点上添加了 Camera 组件后运行时宽高会变为 0 的 bug
  • [Animation] 优化动画组件
  • [Engine] 优化原生平台摄像机裁剪性能
已知问题
  • 原生平台 OpenGL 的 JavaScript API 绑定被移除,1.7.1 才会加回来
代码重构
  • [Build] 使用新的加密算法编译 jsc,适配新的绑定层接口
  • [Engine] 移除目前没用到的粒子 draw mode
  • [Engine] 从核心包移除 cc._drawingUtil, cc.DrawingPrimitiveCanvas, cc.DrawingPrimitiveWebGL 和 cc.DrawNode
改变
  • [Editor] 将 Panel.profiles 移动到 Package.profiles,插件档案不再设置分 panel 的档案
  • [Build] 打包安卓项目要求 Android Studio 升级到 3.0 并且更新 Platform-Tools 到 26.0.2
  • [Engine] 移除 cc._logToWebPage 和 cc._logList 这两个接口,改成内部实现
  • [Engine] 移除 cc.$, cc.TextureAtlas 模块
废弃
  • [Engine] 废弃 Texture2D.getName API,改用 Texture2D._glID
  • [Engine] 废弃 cc.inputManager 模块,改用 cc.systemEvent
2017年10月19日
V1.6.2 版本

让大家久等了!由于开发团队最近把大部分精力放在了搭载 JSB 2.0 的 v1.7 版本开发,导致本次补丁版本的发布时间有点拖沓了!不过无需怀疑,这个版本我们保质保量,依然重点解决了以下问题:

- Web 平台构建时为文件名嵌入 md5 信息的功能支持对脚本生效

- 集成 AnySDK 时可以选择 AppStore 或越狱渠道

- 修复大量原生内存泄露问题

- 增强 Web 平台上浏览器兼容性

以下贡献出完整的改动列表。

改动列表

编辑器

- [Build] 构建 Web 平台时如果启用 md5Cache,除了 index.html 的所有资源都会加上 md5

- [Build] 编译原生平台的 jsc 时,在 jsc 中保留行号信息,同时备份 js 文件以便查看源码

- [Build] 修复使用 Android Studio 调试可能失败的问题

- [Build] 集成 AnySDK 构建时,增加越狱渠道选项,未勾选时屏蔽可能会引起审查问题的 API 名称

- [Build] 修复 Windows 上项目和 Creator 不在同一个分区时启用 md5 发布会失败的问题

- [TypeScript] 修复 1.6.1 新建 TypeScript 脚本时的警告

- [TypeScript] 修复在 TypeScript 中定义 Class 的 getter 时可能报错的 bug

- [Properties] 修复脚本预览报错 Cannot set property 'innerHTML' of null

- [Properties] 改进属性类型查找失败时的容错处理

- [Preview] 修复 eruda 启用后打印日志可能会卡死的问题

引擎

- [JSB] 修复 Spidermonkey v52 频繁切换场景不会主动 GC 的问题

- [JSB] 支持使用 Firefox 远程断点调试原生游戏

- [JSB] 修复 scheduleOnce 导致的内存泄露问题

- [JSB]  Fixes Cocos2dxActivity is re-created which causes crash if launching app first time and re-opening from icon

- [Engine] 修复 WebSocket 在无 js delegate 时可能崩溃的问题

- [Engine] 修复 JS_EncodeStringToUTF8 可能造成内存泄露的问题

- [Engine] 修复 cc.game.restart 不能销毁 persistRootNodes 的问题

- [Engine] 修复安卓 QQ 判断 cc.sys.browserType 可能出错的问题

- [Engine] 修复安卓 8 上 cc.sys.browserType 可能误判为 Opera 的问题

- [Engine] 修复 Mask 下的节点在 Camera 作用下点击判定错乱的问题

- [Engine] 修复 Texture2D.url 在原生平台获取不到的 bug

- [Engine] [iOS] Default audio session mode should be set to AVAudioSessionCategoryAmbient

- [Engine] 调整 requestAnimationFrame 的执行顺序到 mainLoop 之前,避免 setFrameRate -> cancelAnimationFrame 的操作无效。

- [Action] Fix nested sequence with repeat being considered as reversed issue

- [iOS] 修复由于 launch image 设置错误导致 iOS 分辨率获取不正确的问题

- [Audio] 修复用户注销 ended 事件时可能会影响系统内部事件监听的问题。

组件

- [Camera] 修复 Camera 会影响全局事件坐标的 bug

- [RichText] 添加 handleTouchEvent 属性,取消这个属性可避免 RichText 拦截事件

- [RichText] 响应监听的事件后,事件不再向父节点派发

- [RichText] 修复 RichText 尺寸为 0 的 bug

- [EditBox] 修复 EditBox 设置 placeHolder Font Color 颜色,在 Native 效果不对的 bug

- [EditBox] 修复 EditorBox 回车以后响应 2 次 editBoxEditingReturn 事件(Windows 平台)

- [EditBox] 修复 FireFox 浏览器 EditorBox 类型为 Number 会导致无法获取焦

- [WebView] 修复 Webview 加载的网页播放音乐后,切换场景还会继续播放的问题

- [Layout] 修复 Layout 与 Widget 冲突,导致 Layout size 会无限增加的问题

- [Widget] 修复 RichText 受 Widget 作用时可能会引起编辑器报错的问题

- [Mask] 修复 Mask 矩形类型位置和显示效果不匹配的问题

- [ScrollView] 增加 scroll began 和 scroll ended 事件

- [DragonBones] 修复 DragonBones 对象在原生平台内存不释放的问题

- [Tiledmap] 修复 tilemap culling 表现不正确的问题

慢工出细活,v1.6.2版本新增的亮点功能一定会让你惊叹不已。别忘了来下载升级哦!

2017年08月28日
V1.6.1 版本

作为 v1.6 的第一个补丁版本,我们对新 JSB 框架层上实例化效率变慢的问题进行了调整,解决了更多新框架上的崩溃问题。另外一个修复的重点是 TypeScript 的属性声明和序列化问题,新版本的 TypeScript 声明更简单,表现更稳定。

完整改动列表

- [Editor] 修复被依赖的模块出现脚本错误时编辑器不能正常打开的问题

- [Editor] 修复从 asset IPC 消息获取 script 信息时报错的问题

- [Editor] 修复资源导入 zip 包时错误资源未提示的问题

- [Editor] 修复免编译预览的脚本可能会和 npm 第三方库脚本名冲突导致错误的问题

- [Prefab] 修复自动同步预制的坐标未能正确保存到场景中的问题

- [Build] 升级 Android Studio Gradle 构建插件的版本到 2.3.0,可以在编译阶段看到更详细的编译信息

- [Properties] 修复在切换节点 active 属性的时候,会有一段时间 active 的 values 无法显示的问题

- [Properties] 修复批量复制时部分属性值丢失的问题

- [Extension] [Breaking] 修复 scene-script 中无法加载项目中模块的问题,请使用 `cc.require`

- [Engine] 修复 iOS 双击 home 上划关闭应用崩溃问题

- [Engine] 修复 1.6 JSB 上 prefab 第一次 instantiate 时性能较差的问题

- [Engine] 修复 network 模块潜在崩溃问题

- [Engine] 修复加载远程贴图时,url 中带有 query 的话将引起贴图互相覆盖的 bug

- [Engine] 修复WebGL模式下cc.Graphics填充过多个形状时,之前填充的颜色会产生变化

- [Engine] 修复场景资源自动释放时可能会释放常驻节点仍占用资源的问题

- [Action] 修复 BaseJSAction 类的 clone, reverse 方法返回值错误

- [TypeScript] 修复某些 TypeScript 类相互继承后无法反序列化属性的 bug

- [TypeScript] 修复构建后 TypeScript 默认值可能出错的问题

- [TypeScript] 不再需要在装饰器重复指定属性的默认值

- [Tiledmap] 单独为 CCSGTMXLayer 开启 DepthTest,解决遮挡错误的问题

- [Animation] 修复重复添加 AnimationClip 的时候报错的问题

- [Label] 修复当 Label 创建时机过早时,赋值以后节点 size 未发生变化的问题

- [Label] 修复动态设置 TTF 类型的 font 会导致 outline 丢失的问题

- [Label] 修复重复创建 Label 会导致字体显示错误的问题

- [RichText] 使 <img> 标签支持设定height及width,但维持基础原则"图像高不超过设定高行"

- [WebView] 支持 `setJavascriptInterfaceScheme` 和 `setOnJSCallback` (仅在 Android 跟 iOS 中使用)

- [WebView] 修复 WebView 中的 event 在编辑器环境下也会触发的问题

- [Layout] 修复 Layout节点隐藏后再显示,不会刷新子节点位置的问题

- [Camera] 修复部分摄像机 target 会导致 undefined reference 报错的问题

- [JSB] 修复 EditBox 析构时由于 JS 委托对象被回收导致的偶现崩溃现象

- [Spine] 修复 Spine 事件回调可能会出现转换 event data 失败的问题

- [DragonBones] 修复 DragonBones 在原生平台的剔除问题

2017年08月16日
V1.6.0 版本

Cocos Creator v1.6 版本发布了!感谢社区对这个版本漫长测试周期的耐心等待和对测试版的积极试用和反馈。我们在这个版本更新中继续保持了优化性能和提升体验的传统,并且这个版本还是后续一系列重要的引擎进化的开始。

我们希望改善开发者编辑器使用体验的同时,不断提升 JS 和 C++ 引擎的性能,解决开发者最关心的包体、缓存、网络通讯等问题。基于这个目标,我们在 v1.6 版本中加入了下列重要功能。

特色功能

- JavaScript-Binding 绑定层升级,大幅提升安卓平台性能

- 预览游戏时脚本免打包,改动脚本后瞬间刷新游戏

- 批量编辑节点和组件属性

- web平台构建时自动将版本加入资源文件名

- 升级 iOS 平台的 WebSocket 库,解决大部分平台专属网络通讯问题

  JavaScript-Binding 绑定层全面升级  

在这个版本中,我们升级了从 JavaScript 脚本到原生平台 C++ 绑定的中间层,一方面我们将原生平台使用的 JavaScript 引擎 SpiderMonkey 从 v33 版本升级到了 v52 版本,大幅度提高了安卓平台的 JavaScript 运行性能(由于 iOS 平台上不支持开启 JIT 所以效果并不明显);另一方面我们在这个版本开始对绑定层接口进行重构,目标是:

- 提供完全抽象的 JSB 绑定层 API,独立于 JavaScript 引擎,用户的绑定代码将不再受未来 JS 引擎升级影响

- 支持平台原生的 JS 引擎,包括 Android 平台的 v8,iOS 平台的 JavaScriptCore。

在升级绑定层后,我们不仅为后续开发者的 C++ 层绑定开发提供了稳定的环境,而且支持原生平台的 JS 引擎会使得构建原生版本时的包体大幅减小,因为不再需要将 SpiderMonkey 引擎库加入到发布版本中。

jsb-chart

 预览游戏时脚本免打包  

由于脚本模块化加载的需要,我们从 Cocos Creator 第一个版本开始就对用户的脚本进行编译打包,但对于规模庞大、动辄几百个脚本的项目来说,每次修改任何脚本都会触发整个编译打包流程,会使得修改脚本后的等待时间非常长。为了解决这个问题,我们从 v1.6 开始引入了编辑器环境下脚本免打包的模块化系统,可以在预览环境下分别加载单个文件的脚本。对任何脚本的改动将只触发该脚本本身的编译流程,使得开发脚本后刷新预览的周期缩短到1~2秒,大大提升开发效率。

目前构建后的脚本仍然需要进行打包,因为终端浏览器里没有相应的加载环境。我们会在后续继续研究构建发布时也能保持每个脚本文件独立存在的构建模式,来方便需要分别更新脚本的开发者更容易部署游戏版本。

bundless

  批量编辑节点和组件属性  

编辑 UI 场景时,经常会遇到需要选中一些节点并批量修改他们的一些属性的需要,这个版本我们加入了属性检查器的批量编辑功能。

多选节点后这些节点上共享的组件和属性就可以进行批量编辑了,当不同节点的某个属性值不同时,选中这些节点后,属性检查器上这个属性值会显示为 -, 修改这个属性会让所有选中节点上该属性都变成同样的值。

properties

 web 平台构建时为资源文件名加入版本号  

对 H5 游戏开发者来说,有效利用浏览器的缓存机制,避免用户重复下载资源,并且在更新游戏资源时确保更新缓存的资源版本是非常重要的。我们在这个版本的构建发布面板里增加了 **md5 cache** 构建选项,勾选后会在构建时为所有资源文件名增加该文件的 md5 码。这样在更新游戏版本时,根据文件名的不同,用户的浏览器会自动重新下载 md5 改变了的资源,在最大限度使用缓存节省流量的情况下确保版本的一致性。

 iOS 平台上使用 SocketRocket 代替之前的 WebSocket 实现  

我们用 facebook 开发的 [SocketRocket 库](https://github.com/facebook/socketrocket) 替换了之前一直在 cocos2d-x 和 Cocos Creator C++ 引擎中使用的 libWebsocket 库,这个全新的实现支持以下特性:

- SocketRocket 提供异步 API,更符合通讯习惯

- 封装了跨线程通讯

- 网络状态变更时不会造成连接关闭

- 锁定手机设备屏幕不再造成报错

- 不再依赖包体较大的 openssl 库

- 使用 wss 连接时不再需要本地 CA 根证书

后续版本中我们会对 socket.io 的原生实现也进行进一步的优化,希望能为开发者们提供一个简单、稳定的网络通讯编程环境。

完整改动列表

- [Audio] [Breaking] 修复 `audioEngine.stop` 会触发 finish 事件回调的问题,现在 setFinishCallback 设置的 callback 只有在自然播放结束的时候

  编辑器  

- [Editor] 加入预览游戏时免编译脚本的模式,免编译模式下 VSCode 的调试配置需要通过开发者菜单更新

- [Editor] 移除内置代码编辑器,默认双击文本文件时会使用系统默认的应用打开

- [Editor] 修复 Windows 上编辑器运行路径和项目路径不在同一个驱动器时加载脚本路径错误的问题

- [Editor] 修复导出场景资源时引用量过大可能导致卡死的问题

- [Editor] 修复 require 第三方库时的报错 `can not find module for path : undefined`

- [Editor] editor-input 和 editor-textarea 控件添加 maxLength 支持

- [Editor] 禁止弹出和关闭部分核心面板,包括场景编辑器、资源管理器和节点树。

- [Editor] 修复 TS 脚本在重命名后,旧的不会删掉导致脚本名称重复的问题。

- [Editor] 修复场景保存时仍有 “Cannot read property ‘_prefab’ of null” 的报错

- [Editor] 修复 property 装饰器在新版 VSCode 中的报错

- [Editor] 修复项目中脚本过多时会出现 `too many open files` 的问题

- [Editor] 修复编辑器中无法通过 url 加载资源依赖的 raw asset 的问题,修复编辑器无法正确加载 TSX 资源的问题

- [Editor] 修复编辑器里脚本文件加载顺序不固定的问题

- [Editor] 修复切换场景编辑模式时可能出现 `Possible EventEmitter memory leak detected` 的报错问题

- [Editor] 修复创建 ToggleGroup 时报错的问题

- [Editor] 修复选中编辑 plist 中的 spriteFrame 时可能 Sprite Editor 窗口会卡死的问题

- [Build] 构建 Web 端时加入插入 eruda 的选项

- [Build] 修复 windows 平台上构建 web 时使用 md5 cache 报错的问题。

- [Build] 构建时压缩和合并资源 uuid,以优化 settings.js 资源索引文件的体积。

- [Build] 修复某些项目会在 build-raw-assets 时卡住不动的问题

- [Build] 修复构建非调试版本时 settings.js 未被压缩的问题

- [Build] 修复构建时添加 md5 cache 导致部分组件无法正确获取资源引用的问题

- [Build] 修复构建 Android 时每次都会重新编译的问题

- [Build] 修复 TTF label 在使用 md5 cache 无法正确下载资源与加载字体的 bug

- [Build] 修复较低版本 Xcode 在编译 iOS/Mac 工程时可能遇到的 `undefined symbol: NSStreamNetworkServiceTypeCallSignaling` 编译失败问题

- [Build] 在 web 构建面板上面添加 md5Cache 选项,为资源文件名增加 md5 编码,用于正确更新客户端资源缓存。

- [Build] 修复构建项目时,粒子系统的 plist 所在目录下的所有贴图会被强制导出的问题。修复构建项目后粒子 plist 里引用的资源 uuid 和压缩后的 uuid 不符。

- [AnySDK] 支持构建时动态添加 AnySDK 依赖,默认构建的工程不包含 AnySDK 代码。

- [ProjectSettings] 引擎模块选择界面增加全选选项

- [Preferences] 为偏好设置面板添加 tooltip

- [AssetDB] 修复 jpg 格式的贴图资源无法被删除或改名的问题

- [Properties] 修复组件属性由数组类型改回普通类型时,属性检查器不会自动重置和刷新的问题

- [Properties] 修复 event-prop 无法指定 tooltip 的问题

- [Properties] 修复属性检查器上预览 Markdown 文件出错的问题

- [Properties] 允许多选节点后在属性检查器里批量修改属性

- [Properties] 修复 Script 内数据结构内继续嵌套 array 之后无法显示的问题

- [Properties] 修复 Properties 查询超时后,面板停止了 node 的状态更新,直到重新点击 node 后,才重新启动更新的问题

- [Properties] 修复在组件的脚本资源栏上点击无法跳转到脚本资源所在位置的问题

- [TypeScript] 升级内置 typescript 编译器到 2.4 版本

- [Store] 改进扩展商店下载体验,增加了安装失败和解压失败的时候的提示,使用扩展包名作为下载压缩包的文件名。

- [Store] 插件商店产品描述支持 markdown 格式

- [Store] 改进扩展商店体验

  - 修复重复下载文件的时候出现报错的问题

  - 加快删除文件夹的速度(之前用 Utils.remove 每个文件删除的时候都有延迟,只有删除 watch 的文件夹需要用)

  - 安装失败后,提示复制到某个文件夹后,自动打开这个文件夹

  - 把 Editor.error 统一换成 Editor.warn

  - 增加安装完成后的提示

  - 统一整理了一下错误的打印消息,出现错误的时候,都会显示一个 warn

  - 允许同时安装多个插件

  引擎  

- [Engine] 添加 `Node.insertChild` 接口,用于插入节点到某一层级下特定位置。

- [Engine] 使用 SocketRocket 第三方库代替原来 iOS 上的 WebSocket 实现

  - SocketRocket 提供异步 API,更符合通讯习惯

  - 封装了跨线程通讯

  - 网络状态变更时不会造成连接关闭

  - 锁定手机设备屏幕不再造成报错

  - 不再依赖包体较大的 openssl 库

  - 使用 wss 连接时不再需要本地 CA 根证书

- [Engine] 修复使用 `evalstring` 调用的方法返回类型为 void 时会出错的问题

- [Engine] 修复 Spidermonkey v52 在 iOS 模拟器上创建 TypedArray 崩溃的问题

- [Engine] 修复 loadResDir 加载好的资源排序不稳定的问题

- [Engine] 修复 Mask 的 IMAGE_STENCIL 模式在场景勾选延迟加载资源时失效

- [Engine] 支持在项目中使用 CC_BUILD 和 CC_DEBUG 预编译宏

- [Engine] 修复 Mask 的节点 setContentSize 无效果的问题

- [Engine] 修复 jsb 不兼容 TypeScript 里的 promise 用法问题

- [Engine] Fix potential crash after WebSocket.close and send onclose event after onerror is received

- [Engine] 移除引擎裁剪后残留在包体中的 ZipUtils 和 TiledMap 有关模块(减小核心包大小)

- [Engine] 为 SGLabel 增加对象池,减少内存开销,提升反序列化效率。

- [Engine] Fix DebugInfos not included in jsb issue

- [Engine] Fix director event before update missing issue (user reported issue)

- [Engine] Increase default max batch vertex count (improvement)

- [Engine] 修复 `cc.game.restart()` 调用会导致崩溃的问题

- [Engine] 只有在预览和调试模式下才获取 webgl 错误,减少发布版的性能损耗

- [Engine] 修复 `color.fromHEX` 输出的颜色值不正确的问题

- [Engine] 修复一个 component 有多个 schedule 的时候 unschedule 可能出错

- [Engine] 修复 XMLHttpRequest timeout 无法设置的问题

- [Engine] 修复粒子和拖尾效果的 z 值不正确的问题

- [Engine] 预览游戏切换场景时增加更多调试信息,包括场景资源 uuid 和初始化每一步骤所用的时间

- [Engine] 创建新的 Label 渲染对象时,使用对象池而不是 new

- [Engine] 修复原生平台上使用 LabelOutline 时退出游戏会导致崩溃的问题

- [Engine] 统一 scheduler 在 web 和原生的参数签名,必须使用6个参数或4个参数才能正确工作。

- [Engine] 修复编辑器里加载粒子资源时报错的问题

- [Engine] 修复 `cc.game.restart` 会导致 Web 平台崩溃的问题

- [Engine] 升级了引擎编译时使用 `gulp-uglify` 版本,如果用了自己定制的引擎,需要同步引擎 repo 的 `package.json` 并重新安装最新依赖。

- [Engine] 修复 tint action 同时改变了 alpha,导致从 sgNode 同步 color 到 Node 过程中传递的 color.a 不等于 255 而报错的问题

- [Audio] 修复某些版本的 IE 11 在 audio 没加载完成的情况下,设置 currentTime 会报错的问题

- [Audio] 修复 AudioSource 初始化时加载声音操作可能造成声音播放停止的问题

- [Audio] 修复设置音量为 0 时无效的问题

- [Audio] 修复多条音轨同时播放并频繁调用 `_play2d(AudioCache *cache, int audioID)` 时的崩溃问题。

- [Audio] 修复 Audio DOM 模式在构建的时候执行 md5 cache 后,找不到资源的问题

- [Render] 默认关闭脏矩形渲染优化,可以通过设置 cc.renderer.enableDirtyRegion(true) 来开启。

- [Action] 解决 ActionManager 在 update 过程中删除 action 导致的报错,包括:salvaged 状态去除之后,没有对正在执行(可能被移除)的 action 做保护;action 被移除后(放入对象池)可能会立即被复用,导致 ActionManager 中的状态问题。

- [Action] 修复当 callFunc 的 target 为 null or undefined 时,jsb::Object 仍然会去 bind proxy 导致报错的问题

- [Action] 修复带基本数据类型参数的 callFunc 创建崩溃

- [JSB] Improve setTimeout, setInterval implementation

  组件  

- [Label] 优化 BMFont 解析速度,目前 BMFont 的解析直接在编辑器导入的时候就完成了,不需要运行时解析。

- [Label] 拆分 `setFontFileOrFamily` 为 `setFontFamily` 和 `setFontAsset`

- [Label] 改进 TTF 字体的创建效率

- [BMFont] 改进具有多张贴图的 BMFont 资源,在索引贴图时可能出现路径太长出错的问题

- [BMFont] 修复在原本使用位图字体的组件上点击 useSystemFont 导致会出现 2 个 Label 的问题

- [RichText] 修复禁用 RichText 组件或节点时没有反注册点击事件的问题

- [PageView] 添加新属性 pageTurningSpeed

- [Spine] 支持 Spine 多骨骼之间的批处理渲染

- [Spine] 修复 Spine 原生平台上使用 addAnimation 后动画可能无法正确播放的问题

- [Tiledmap] 修复原生平台上 TiledMap 在使用 getPropertiesForGID 时,如果该图块没有设置 Custom Propertie 时会报错的问题

- [Tiledmap] 修复 Tilemap 不能正确被 camera culling 的问题

- [Tiledmap] 添加到 camera 上的时候,退出场景时,camera 无法清除 Tiledmap 的 sgNode

- [Tiledmap] 开启 DepthTest 让 tiledmap Z 轴生效

- [Animation] 修复修改 sample 属性时报错的问题

- [Animation] 优化帧动画性能

- [Component] 修复在包含渲染组件的节点上添加 SpriteDistortion 组件时的报错

- [Component] 增加 cc.BlockInputEvents 组件便于遮挡 UI 事件

- [Particle] 修复当粒子的 file 为 null 的时候无法导出资源的 bug

- [Particle] 修复 endColorVar 属性显示丢失的问题

- [Physics] 修复使用 Joint 时由于调用 destroy 方法导致的崩溃问题

- [Physics] 为 PhysicsManager 添加 `enabledAccumulator` 选项,用于提供固定时间的物理更新

- [Physics] 默认关闭添加 polygon collider 时就自动识别图片生成顶点,如果用户需要,可以通过点击按钮来生成顶点

- [VideoPlayer] 修复 VideoPlayer 在构建的时候执行 md5 cache 后,找不到资源的问题

强烈推荐小伙伴们下载升级v1.6版本,它解决了Creator用户一直以来迫切需要但又暂未处理的问题。升级完,记得到社区提交使用感受哦!

2017年07月13日
V1.5.2 版本
1.5.2 版本在内测阶段就收获了大量积极的反馈,在上一个补丁版的基础上,进一步加强了稳定性并提升了工作效率。下面介绍主要版本特效。 grow

版本特色功能

大幅提高脚本编译速度

项目脚本增多时的编译速度一直开发者们关注的问题,在1.5.2版本中我们进一步优化了脚本编译流程,使得每次改动项目脚本后的编译速度大大提升。而在下个版本中我们会彻底改造脚本编译系统,达到预览时完全免编译的畅快体验。

为 Camera 增加 culling 功能

上个版本 Camera 组件的引入对于可视范围外物件的剔除造成了一定影响,在这个版本中我们重新整理了这部分功能,现在可以确保摄像机视角外的物体可以被正确剔除了,另外也解决了在摄像机范围外生成的物体在某些情况下可能无法正确显示的问题。 此外还增加了 `cc.Camera.getCameraToWorldPoint()` 接口,用于正确获得摄像机拍摄物体的世界坐标。 camera

支持 Visual Studio 2017

编译 windows 平台时,增加了使用 VS 2017 进行编译的选项。另外需要注意的是,我们从下个版本开始将不再支持 VS 2013,请大家届时对开发环境进行必要调整。  

更多完整改动列表点这里

2017年06月16日
V1.5.1 版本

这个版本我们修复了大量用户反馈的问题,其中影响较大的重要问题包括:

1. 改善了资源加载时的回调机制,原生和 Web 加载场景时速度可提高 2~3 倍

我们发现在加载场景资源时,下载进程可能会出现不必要的异步等待,在 1.5.1 里我们修复了这一问题,并且使得资源加载速度相比 1.4 版本更加快速。下面的图表是新版本在某实际原生项目中的加载表现。

downloader

2. 在 iOS 平台关闭 openssl 库中的 async 功能,避免苹果商店由于程序使用了 (setcontext, getcontext, makecontext) 等接口而遭拒。

近期苹果商店审查时对于 API 使用的要求越来越严格了,我们也会持续关注苹果审核标准,并从引擎层面解决可能存在的 API 使用问题。

3. 增加构建选项 “合并图集中的 SpriteFrame”,默认不勾选,解决 1.5.0 构建原生平台时载入游戏速度可能变慢的问题。

1.5.0 中我们会默认合并图集中的 SpriteFrame,这样会导致当资源量很大时产生需要很长时间解析的资源描述文件,如果用户对于资源请求数量要求不高,但希望首屏能够快速加载时,可以取消这一选项。

build

更多完整列表,点击这里

2017年05月23日
V1.5.0 版本

这次,我们着重补强了Cocos Creator之前在动作游戏和大型项目开发方面的不足,通过提供物理引擎、摄像机和TypeScript的支持,Cocos Creator现在能够更好的开发各类动作游戏和大型工程。

除了以上社区期待度很高的新功能之外,我们再一次优化了引擎加载的逻辑,大幅提升了场景加载和解析的速度;另外我们重构了Windows桌面和Android平台上Label和输入框的实现,大幅增强了使用体验和兼容性。相信拥有强大功能的Cocos Creator v1.5,会为你接下去的开发工作如虎添翼。

Cocos Creator v1.5 主要更新亮点包括:

- 集成Box2D物理引擎 ,加入刚体和关节组件

- 加入摄像机组件,可以在无损性能的情况下支持高速卷屏

- TypeScript和ES6 Class支持,全面强化IDE代码提示

- 优化场景加载流程,场景加载速度提高38%

- 跨项目导出/导入资源,自动关联资源依赖

- 增强Label和EditBox在Windows桌面平台和Android平台的使用体验和兼容性

- 热更新支持中断后续传

下面我们将详细介绍Cocos Creator v1.5重点功能更新。

集成 Box2D 物理引擎

Cocos Creator 在 1.5 版本中终于集成了知名的物理引擎 [Box2D](https://github.com/erincatto/Box2D),这款容易上手功能强大的物理引擎将为 Cocos Creator 带来全面的物理检测和运算能力,全面支持你的动作和物理游戏。

除去通用的物理引擎功能之外,Cocos Creator 集成后的物理系统中还加入了刚体(Rigidbody)和关节(Joint)组件,加上专门为物理引擎定制的碰撞体(Collider)组件,我们仅仅通过在场景中摆放各种不同的物理组件,就可以实现有趣的交互效果了。配合新加入的 Camera 摄像机组件,在编辑器中完成丰富关卡内容的平台动作卷屏游戏将会非常轻松!

physics_scene

摄像机组件

开发动作和冒险类游戏时,视角的移动和场景的卷屏必不可少,之前开发者们只能通过整体移动场景里所有节点来模拟视角移动的效果,但大量节点位移的运算会影响性能,尤其是在加入物理引擎之后,每次移动碰撞体都会导致重新生成和计算物理世界。

而在 1.5 版本中加入的 Camera 组件就能够完美解决视角移动的问题,Camera 组件中可以指定一个或多个节点作为被摄像机渲染的目标,将场景的根节点拖拽到 Camera 的目标列表中,之后移动 Camera 组件所在节点,就可以实现场景卷屏的效果。Camera 的渲染是通过矩阵运算来实现的,因此不会对场景中的运动计算带来额外的开销,可以说是 2D 动作游戏卷屏的完美解决方案!

camera

TypeScript 和 ES6 Class 支持

为了更好的支持各类 IDE(如 VS Code, WebStorm 等)里的游戏脚本代码提示,我们在 1.5 版对 cc.Class 的声明方式进行了一次重构,现在可以在 Cocos Creator 项目里使用 ES6 Class 或 TypeScript 来声明组件和编写游戏逻辑了。

之前很多有静态语言使用经验的用户在上手 Creator 时反馈代码提示和自动完成功能较差,无法准确的提示组件的成员属性和方法,以及引用其他脚本时也无法提示被引用脚本里的成员。这主要是由于编辑器序列化数据需要的特殊声明格式和各大 IDE 能够识别的原生语法不符合。而在这次重构中我们引入了装饰器语法来帮助编辑器进行数据识别,之后我们就可以使用 ES6 和 TypeScript 的标准语法声明 cc.Class 和 cc.Component 了。使用标准语法声明的 cc.Class 所有成员类型都能够被各种主流 IDE 自动识别,加上引擎 API 类型声明文件 creator.d.ts,使得目前 Creator 脚本开发时可以正确提示几乎所有的相关接口代码!

TypeScript 支持强类型声明,对于多人协作开发的大型项目来说,也能够提供更准确的接口通讯规范和错误报告。推荐有相关强类型语言开发经验和大型项目的技术团队尝试!

auto_complete

场景加载速度提升 38%

Web 版游戏的最大优势就是免安装,即开即玩,因此 web 版游戏场景的加载速度,尤其是初始场景的加载速度对于用户体验和留存都至关重要。本次更新在场景资源加载方面进行了大幅优化,使用对象池让原来在 uuid-loader 和 deserialize(反序列化)模块中的对象创建频率大大减少,在本地预览时场景加载速度提升幅度达到 38%。但实际项目中加载速度的瓶颈可能来自网络连接速度,所以实际游戏中的提升幅度可能没这么大,但基本也能有 200ms~300ms 以上提升。

跨项目资源导入/导出共享

在前一个版本中,我们通过扩展插件的系统实现了项目间共享一个资源路径的功能,但还有更多朋友希望我们能够提供一种更简单直接的,跨项目导入导出资源的机制,来实现将已有项目中的资源导入到新项目,或者美术人员和开发人员的项目分开,并通过导出导入来生产和整合美术资源的生产线。

通过主菜单的「文件 -> 导入/导出资源」打开的资源导入导出工具,我们可以轻松的导出场景或 Prefab,选择导出目标后会自动列出该场景和 Prefab 依赖的资源,导出时自动生成 zip 包。在另一个项目中导入该 zip 包即可。如果遇到 uuid 冲突还可以选择自动更新 uuid 以保留两个版本的资源。

export

完整改动列表

编辑器

- [Scripting] 支持 TypeScript 脚本,支持使用 ES6 Class 声明 cc.Class 和组件,全面强化 IDE 里的代码提示功能

- [Editor] 增加导入导出项目资源功能,从主菜单的 `文件` 中可以打开导入导出界面

- [Editor] 属性检查器里预览大尺寸代码文件时只显示一部分,改善浏览大尺寸文件时的编辑器性能

- [Editor] 导入为插件的脚本资源添加选项「在编辑器里加载」,用于标记部分插件脚本在编辑器免加载,来提高场景打开的效率

- [Editor] 为所有项目脚本默认导出所有 CCClass

- [Editor] 自定义引擎路径加载失败时,报错并尝试使用内置引擎

- [Editor] 修复修改场景后退出编辑器,弹出保存提示时无法正确保存场景或取消退出的问题

- [Editor] 在预览服务器增加 `update-db` 接口,通过预览网页或外部命令访问此接口就可以在不激活编辑器窗口的情况下编译脚本和更新资源。

- [Editor] 修复 Color 的 alpha 为 0 时会被反序列成 255 的问题

- [Editor] 修复首次保存场景时取消保存文件时会报错的问题

- [Assets] 修复 sub-meta 导入失败时并没有显示报错信息的问题

- [Assets] 在资源的右键菜单增加「打开 Library 中的资源」选项

- [Assets] 修复创建 Prefab 时可能出现 `TypeError: s.canAddChild is not a function at assets-tree._onDropAreaMove` 的错误

- [Build] 修复使用 binary 模板构建和编译 window 和 android 平台时可能出现的编译失败错误

- [Build] 原生平台打包时,会把 Atlas 里的 spriteFrame 资源合并成一个 json

- [Build] 修复使用 binary 或 link 模板编译 android 工程会有 warning 的问题

- [Build] 修复命令行构建时,如果预览网页没有关掉的话会报错的问题

- [Build] 修复有些情况下构建时选择 `内联所有 SpriteFrame` 后构建文件数量增多的问题

- [Build] 支持使用 Android Studio 2.3+ 和 Build Tools 25 构建安卓项目

- [Build] 修复 windows 上 AutoAtlas 没有正确生成 spriteFrame 信息到 `settings.js` 的问题

- [Build] 在插件中可注册构建和编译完成时的回调

- [Build] 修复构建 Android Studio 工程时 `local.properties` 里 ndk.dir 字段名不正确的问题

- [Build] 支持使用 Visual Studio 2017 构建原生工程

- [Prefab] 在 Prefab 资源上也增加资源延迟加载选项

- [Prefab] 修复自动同步 prefab 引用了其他 prefab 资源时,保存场景时报错的问题

- [AutoAtlas] 修复在 assets 目录下创建 AutoAtlas 后,resources 里的 spriteframe 信息没有被添加到 settings.js 中的问题

- [ProjectSettings] 修复更新分组后,节点属性面板无法及时更新的问题

- [ProjectSettings] 修复项目设置中模拟器横竖屏设置无效的问题

- [Preferences] 修复偏好设置->原生开发环境,未指定 javascript 或 cocos2d-x 引擎路径时仍可保存设置的问题。

- [Preview] 更换了 web 平台预览时 FPS 显示的方式,增加更多调试信息

引擎

- [Render] 将 `cc.macro.FIX_ARTIFACTS_BY_STRECHING_TEXEL` 改回 0 来修复贴图周围像素会被切掉的问题,但这个修改会导致 tiledmap 在缩放和平移时可能产生黑边,需要在生成 tiledmap 贴图时对每个格子进行一像素的拓边(如果使用 shoebox 生成贴图,需要将 extrude 设为 1,padding 设为 2)

- [Engine] 优化了 web 平台加载引擎时的反序列化和下载资源操作,本地预览时场景加载速度提升 38% (远程加载资源时仍需考虑连接速度的瓶颈,实际提升可能低于这个数字)

- [Engine] CCClass 里的 editor 字段添加 executionOrder 字段用于控制脚本执行顺序

- [Engine] cc.loader.loadResAll 已更名为 loadResDir,增加 loadResArray 接口,用于传入相同类型的资源 url 数组

- [Engine] 在 iOS 设备上开启了多点同时触摸事件的支持,现在可以正确使用双指缩放等手势功能了

- [Engine] 修复 EventHandler 组件里的 customEventData 在脚本中赋值为 0 无效的问题

- [Engine] 修复 Sprite 组件激活前 capInsets 设置无效的问题

- [Engine] 修复原生平台使用相对路径加载 tmx 文件引用的贴图时报错的问题

- [Engine] 优化 DOM Image 内存使用,在 handleLoadedTexture 后删除 dom image,并用对象池复用 dom image 来降低 memory footprint

- [Engine] 在 cc.Node 上添加 `pauseAllActions` 和 `resumeAllActions` 接口

- [Engine] 在 cc.Node 上添加 `pauseSystemEvents` 和 `resumeSystemEvents` 接口

- [Engine] 升级 C++ 引擎的 Audio 和 Network 相关代码库,和 cocos2d-x 3.15 同步

- [Engine] 修复使用 LabelAtlas 字体资源的场景延迟加载会闪退

- [Engine] 修复了动态加载 Prefab 后,调用 cc.loader.release 不能正确释放 prefab 引用资源的问题

- [Engine] 修复在 onLoad 中禁用节点时有可能导致后续的 onLoad 没触发的问题

- [Engine] 修复当 Scale9Sprite 的 width 或 height 为 0,并且使用 sliced 模式的时候,会导致数据计算出错的问题

- [Engine] 修复对部分 UI 节点调用 removeFromParent() 后卸载场景时,UI 对象的 cleanup 函数不会被调用,导致原生平台上 ui 控件的内存无法被清除的问题。

- [Engine] 修复将非激活节点加入节点树时,节点上注册的事件可能会被触发的问题

- [AssetManager] 在进度回调中添加更多进度信息,包括:总字节数,已下载字节数,总文件数,已下载文件数,是否是从续传恢复。

- [AssetManager] 修复 `setVersionCompareHandle` 在 `init` 过程中无法生效的问题

- [AssetManager] 支持动态创建 manifest 文件,并手动加载本地和远程 manifest

- [AssetManager] 修复中断热更新后重启会失败,以及重启后重新更新无效的问题

组件

- [Physics] 支持 box2d 物理引擎

- [Camera] 增加 Camera 组件

- [Animation] 修复使用 cc.instantiate 克隆带动画节点时,动画的 playOnLoad 不生效的问题

- [Animation] 修复 animation delay 设置无效的问题

- [Animation] 修复将 Animation 所在节点移出节点树后再调用节点的 destroy 操作时,Animator 对象内存可能泄露的问题

- [Animation] 修复在动画编辑模式下新增 component 并且编辑会造成报错的问题

- [Animation] 修复在设置 uuid 为空的 asset 的时候,会引起报错的问题

- [Animation] 修复动画编辑模式下,更改删除 clip 会导致 Creator 崩溃的问题

- [Particle] 修复粒子组件设置了自动释放时出现报错的问题

- [Particle] 修复使用动画编辑器编辑粒子位置的时候出错的问题

- [BMFont] 修复导入的字体文件中贴图所在路径是绝对路径时导入会报错的问题

- [Label] 重构了 Label 在 windows 桌面平台的实现,解决以下问题:

- 自动换行,Shrink 等文字排版效果无效

- 单行文本框输入内容时显示为多行

- 文本框输入时只会显示前面几个字符

- 多行文本框输入时文字无法置顶对齐

- [Label] 修复 iOS 平台 shrink 模式下面文字显示不全的问题

- [Label] 使用系统字体时可使用 `fontFamily` 属性指定字体类型

- [Label] 修复 BMFont 在原生平台上会造成内存泄露的问题

- [Label] 修复 bmfont 切换字体时,spaceX 属性失效的问题。

- [Toggle] 修改了 Toggle 组件发送事件的时机,在其他 toggle 的状态改变之后才会发送事件

- [Toggle] 在 isChecked 时现在会设置目标节点的 active 而不是设置目标节点的 Sprite.enabled

- [ToggleGroup] 现在在需要启用时候才调用 `addToggle`

- [EditBox] 重构了输入框在 windows 桌面平台的实现,直接在游戏界面里输入文字,不再需要弹出对话框

- [EditBox] 改进 EditBox 在 Android 平台上的兼容性问题:修复第一次点击输入框时可能无法弹出键盘的问题;修复输入前后字体大小不统一的问题;修复切换输入框的单行和多行,对齐方式不正确的问题。

- [EditBox] 修复 `textChanged` 事件回调次数在真机上面不正确

- [EditBox] 修复在 `textChanged` 事件中修改 string 属性时原生平台会显示文字重影的问题

- [EditBox] 修复事件回调里面调用 EditBox.string,光标位置不正确的问题;修复动态切换单行和多行模式,编辑框窗口适配不正确的问题。

- [ScrollView] 修复滚动到边界的事件在设置回弹后可能发送多次的问题

- [ScrollView] 修复惯性滚动回弹不到初始位置的问题,修复脚本中执行 `removeFromParent`,然后再添加到节点树后无法滚动的问题

- [VideoPlayer] 为 iOS 平台增加嵌入式播放(inline)功能

- [VideoPlayer] 修复在 iOS 10 系统的 web 平台无法播放视频的问题

- [VideoPlayer] 在 toggle visibility 的时候,不再移除 dom,而只是修改 visibility

- [WebView] 修复 webview 在 ios 浏览器上面显示大小不正确的问题

- [WebView] 修复 webview 在 chrome 58 上面可能会报错的问题,`toggleVisibility` 时不再移除 dom 节点

2017年04月01日
V1.4.2 版本

版本信息

- [Build] 修复构建时内联 SpriteFrame 选项无效的 Bug

- [Label] 修复拖拽 BMFont 资源到 Label 时的报错问题

- [AutoAtlas] 修复打包后 AutoAtlas 中的 spriteFrame 无法正确获取裁剪透明像素前大小的问题

- [AutoAtlas] 修复碎图中包括旋转后的 spriteFrame 时打包时会报错的问题

- [Widget] 修复 Widget 选中 alignOnce 后在运行时调用 updateAlignment 无效的问题

- [Editor] 修复了项目脚本量较多时可能出现 sourcemap 定位错误的问题

- [Editor] 修复特定 prefab 回退时会导致编辑器卡死的问题

- [Editor] 修复编辑器加载插件脚本时,typeof module === 'undefined' 判断会出错的问题

- [Editor] 修复在碰撞分组面板切换分组配对勾选状态时,没有更新配对组的状态的问题

- [Editor] 修复删除场景后可以继续操作节点属性,并导致报错的问题

- [Editor] 增加 cc.Texture2D 资源类型的数组属性支持

- [Editor] 修复了含有下拉菜单的组件在使用功能菜单里的 MoveUp/MoveDown 后,下拉菜单变为空的问题

- [Build] 修复碎图太多时项目构建可能会卡死的问题

- [AutoAtlas] 自动图集 工具增加扩边选项,修复小图片放大后边缘出现模糊的问题

- [AutoAtlas] 使用工程中的临时目录 temp 存储生成图集时的临时文件

- [AnySDK] 修复了移除 AnySDK 框架后构建原生项目会黑屏的问题

- [Assets] 修复通过拖拽更新已存在的 fnt 资源会报错的问题

- [Assets] 修复重命名资源时会报 _Scene 找不到的问题

- [Engine] 修复 cc.director.setClearColor 传入浮点数失效的问题

- [Engine] 修复 Clipping 性能严重下降的问题

- [Engine] 修复重复调用 setFrameRate(30) 可能导致帧率上升的问题

- [Engine] 修复用 url 加载 raw texture 的时候 loading item 没有设置 isRawAsset 的问题

- [Engine] 修复 JSB 环境下 setInterval 和 setTimeout 没有正确绑定的问题

- [Engine] 修复在 iOS 上包裹在 iframe 中的 cocos 游戏转屏时屏幕适配异常

- [Engine] 移除文档中未实现的 cc.game.onStop 接口

- [JSB] 修复了空场景放置内存上升的问题

- [Action] 修复 cc.sequence 可能导致崩溃的问题

- [DragonBones] 修复 playAnimation 指定播放次数的参数可能无效的问题

- [DragonBones] 修复 DragonBones 5.0 更新 z 轴排序会导致无限添加子节点的问题

- [EditBox] 修复输入框在部分浏览器上无法自动恢复屏幕朝向或者游戏位置等兼容性问题

- [Label] 为位图字体增加字间距属性 spaceX

- [Spine] 为 RegionAttachment 和 MeshAttachment 接口提供 JSB 绑定

- [Prefab] 修复自动同步的 prefab 在编辑过程中修改脚本引起的错误

- [Spine] 改善了 Spine 动画中 slot.attachment 接口的 JSB 绑定

- [Loader] 修复了原生环境下使用 cc.loader.load 加载远程图片时崩溃问题

- [BMFont] 优化了 BMfont 字体信息的解析过程,增加缓存

2017年02月16日
V1.4.0 版本

实例化性能提升,动画、UI再增强

如果说世界上有什么天坑是填不完的,那必须得是性能优化和功能增强。因为赶上岁末年初,1.4版本让大家经历了前所未有的长时间等待,但我们也因此拿出了史上最长的改动列表,其中对社区最关心的几个问题都有完善和改进,包括:

  • 节点实例化性能增强
  • 骨骼动画支持网格渲染
  • UI 文字增强,包括艺术数字支持、位图字体批量渲染、富文本描边等
  • 插件商店上线,开放更多插件接口
  • 热更新问题大量修复,接口增强
  • 增加原生音频软解码方案,提高兼容性
  • 增加 VS Code 调试网页版游戏工作流支持

除了已经确定会随 1.4 版本发布的功能外,其他社区期待度很高的功能也在这个周期内进行了前期开发,比如物理引擎就将确定能够在 1.5 版本和大家见面。未来一段时间我们的工作重点仍然是提升引擎性能和编辑器稳定性,更多的功能扩展将转移到插件系统中实现,并通过插件商店和大家见面。

下面我们将详细介绍 1.4 版本的重大改动。

性能大幅优化

节点实例化是游戏开发中必不可少的程序操作,即使使用了如节点池之类循环使用节点的方法,实例化的效率也关系到加载和初始化场景时的等待时间。

在 1.4 中我们针对实例化操作进行了两方面的优化:预编译 CCClass 构造函数,加快创建 Class 的速度;拷贝对象时不再进行属性判断。在原生平台上达到了 80% 以上的性能提升,在其他平台提升也超过了 50%,详见下图。

instantiate

除了运行时能够享受到的巨大性能提升之外,此次优化也大幅提升了编辑器中打开复杂场景时的速度。

另外针对 Web 平台,我们也合并了 cocos2d-x 3.14 版本中的重要优化,包括:

  • 减少 visit 的调用栈深度
  • 减少 onEnter/onExit/cleanup 的调用栈深度
  • 降低 ActionManager/Scheduler/EventManager 的内存使用
  • 降低 Color 内存使用
  • 优化 RenderCmd 和 SGNode 构造性能
  • 减少 updateProjectionUniform 调用
  • 优化 Vertex 数据计算性能

Spine 和 DragonBones 支持网格渲染

骨骼动画中使用网格渲染(Mesh)来提升表现力已经越来越常见了,因此从推出 Spine 骨骼动画支持开始,社区内要求支持网格渲染的呼声就一浪高过一浪。1.4版本的引擎中一次性的升级了 Spine 和 DragonBones 两大骨骼动画格式的运行时库,在 WebGL 渲染模式和原生平台上都可以完美显示网格渲染了。

spine-mesh

要注意的是由于 Spine 和 DragonBones 的运行库都升级到了最新版本,所以在生产动画数据的时候也需要最新版本的 Spine 和 DragonBones 软件才能正常使用。另外 Canvas 渲染模式是不支持网格的,只能在 WebGL 和原生平台使用。

UI 文字显示增强,性能提升

UI 方面最大的进步在于位图字体现在可以参与批量渲染了!批量渲染的原则和 Sprite 相同,也就是共享同一张贴图的所有 Label 和 Sprite,只要他们中间没有插入使用其他贴图的渲染内容,就可以在一个渲染批次中完成。

现在用一个 draw call 画出整个背包界面也不是梦想了,只要如下图所示,把位图字体和对应的贴图,和其他 UI 用的贴图打包成一个图集,然后在 WebGL 和原生环境下就会自动进行批量渲染。

bmfont-batching

上图中我们用了编辑器自带的自动图集功能,将同一个文件夹下的 Sprite 贴图和位图字体贴图进行了打包,这种情况下要构建项目后才能看到批量渲染的效果。

除此之外 UI 方面的增强还包括:

  • 新增艺术数字资源(LabelAtlas),直接拖拽到 Label 组件里的 font 属性就可以使用
  • 大幅提高了 EditBox 的稳定性,修复了多个平台上的各种问题
  • RichText 增加描边功能,使用 <outline> 标签
  • Widget 支持指定对齐对象

插件商店上线,新插件开发工作流程公布

插件商店正式上线了,目前可以在商店里看到由 Creator 开发团队业余时间开发的十几个编辑器插件,使用 Cocos 开发者帐号登录编辑器后即可进行自动化的下载安装。

store

尽管 Creator 早就开放了插件系统,但相关的接口和文档仍然一直在完善过程中。随着 1.4 版本插件商店正式上线,我们也新增了两个重要的插件系统工作流程:

  • 可以在插件中包括运行时的组件和资源,这些组件和资源在加载插件后就会自动载入项目数据库,方便用户在多个项目之间共享控件和资源。
  • 插件中可以调用引擎接口来访问场景中的节点、组件和其他运行时脚本

这两个全新的工作流程将使得插件更容易对场景和资源进行自动化的管理,增强插件系统在普通游戏项目中的实用性。插件商店上线后也欢迎开发者们提交自己的插件,通过这个平台和社区一起共享知识和资源。

在后续版本中我们会持续对插件系统的接口进行增强和完善。

热更新问题修复,接口增强

1.4 版本中我们开始对热更新进行整改,这个阶段主要修复 bug 和完善热更新接口的原生绑定,以方便开发者自己定制热更新行为,具体的改动包括:

  • (重要)彻底隔离临时更新文件夹和本地缓存文件夹,避免前者失败时污染后者,在确认新版本更新完成时才会将临时更新文件夹合并到本地缓存文件夹中(不会删除旧的本地缓存文件)
  • (重要)绑定 Downloader file task 接口(不支持 data task)
  • (重要)压缩文件的解压逻辑前置到 fileSuccess 之前,保障解压成功才算是文件正确更新
  • 用 manifest 中的 size 字段来收集文件大小数据,更快获得准确的字节级进度
  • 修复 Android 断点续传支持和一些特殊情况下的更新 bug
  • 支持 manifest 间比较的 API:setVersionCompareHandle
  • 支持下载文件后的校验回调:setVerifyCallback
  • 支持设置更新时最大文件并发数 setMaxConcurrentTask
  • 保障 tempManifest 的正确保存,使得进度信息可以正确存储
  • 延迟文件请求到文件夹创建逻辑之后,确保路径正常
  • 读取 App Package 内部 manifest 时强制清空 search path,避免读取到缓存 manifest

后续我们还会结合编辑器进一步改善热更新工作流程,包括提供插件自动生成 manifest 文件,以及支持通过编辑器定义资源包,进行多份 manifest 的可选择更新等等,敬请期待。

增加原生音频软解码方案,提高兼容性

由于音频解码程序和部分安卓芯片不兼容,为了解决在部分安卓系统上播放音频时出现的崩溃问题,我们新增了两个软件解码的第三方库,分别对应 mp3 和 ogg 格式,使用软件解码也同时会提升播放以上格式音频时的效率。

VS Code 调试网页版游戏

VS Code 是 Creator 的首选编程开发工具,但之前的版本中调试游戏程序时只能使用 Chrome 内置的 DevTools 工具,调试时不能对源码进行即时的修改,另外浏览器调试也容易占用过多资源造成卡顿。

在 1.4 版本中我们增加了 VS Code 的调试工作流程,通过菜单一键配置调试参数,并且改善了编译脚本后的 sourcemap 生成逻辑,减少错误。现在可以通过 VS Code 对网页版游戏进行完整的调试工作流程了!

完整改动列表

接口改动

编辑器

  • [AutoAtlas] 现在自动合图里每张图片资源的 uuid 会保持不变
  • [AutoAtlas] 优化合图,支持剔除当前文件夹没有被引用的图片选项
  • [Assets] 保存场景、动画、prefab 资源时会自动将这些资源备份到项目工程的 temp/BackupAssets 目录中,并可通过资源管理器中右键菜单恢复到备份的版本
  • [Assets] 修复超时带来的构建时 asset-db:query-assets 报错
  • [Assets] 渲染层 AssetDB 模块增加接口 createOrSave,会在资源路径不存在的情况下创建资源,否则更新保存资源。
  • [Assets] 修复了按住 shift 多选资源时编辑器显示报错的问题
  • [Assets] 修复了启动包括外部修改过脚本的项目时,不会触发自动编译的问题
  • [Scene] 优化场景面板的任务执行机制,避免多个任务同时执行带来的冲突和数据丢失的可能。
  • [Scene] 修复了从控件库中拖控件到场景编辑器后 gizmo 无法响应拖拽的问题
  • [Preview] 为 Web 平台预览界面添加逐帧运行按钮
  • [Preview] 修复了启动预览后,编辑器内切换场景,无法再切换预览的场景的问题
  • [Preview] 修复了中文注释和 log 在 Chrome 上调试时会显示成乱码的问题
  • [Preview] 修复了场景重新编译后,预览时场景名出错的问题
  • [Prefab] 修复 Revert Prefab 时,Button 的 clickEvent 的 target 会变成 missing 状态 的问题
  • [Prefab] 修复了复制 Prefab 中的节点时,两个节点会关联同一份资源中的索引问题
  • [Prefab] 重命名 Prefab 资源后,实例化后的节点名现在也会跟着改变
  • [Prefab] 用户嵌套 Prefab 时会弹出警告,提示只有最上层的 prefab 会被保存,另外选中 Prefab 中的任何节点时,在属性检查器头部会显示所属 prefab 的名称
  • [Prefab] 修复不自动刷新的 Prefab 在运行时触发资源加载的问题
  • [Preferences] 增加了默认不对导入资源进行图片剪裁的选项
  • [Preferences] 偏好设置的常规面板中加入新创建的 Prefab 是否自动同步的选项
  • [Preference] 选择外部脚本编辑器的菜单增加「移除」按钮
  • [Preference] 修复自定义C++引擎路径下没有模拟器文件夹时,无法重新选择内置引擎的问题
  • [ProjectSetting] 修复了项目设置数据无法保存的问题
  • [ProjectSetting] 项目设置里添加 Canvas 默认分辨率和自适应 policy 设置
  • [ProjectSetting] 增加按照项目设置模拟器分辨率的选项
  • [ProjectSetting] 修复了项目设置中 预览运行 面板无法显示的问题,修复了引擎模块设置无法正确保存的问题
  • [Properties] 优化 slider 控件的步长设置, type 是 integer 的时候设置 precision = 0
  • [Properties] 修复点击组件标题栏右边的功能按钮(齿轮)时也会折叠属性的问题。
  • [Properties] 属性检查器增加 cc.Rect 类型控件支持
  • [Simulator] 模拟器菜单添加选项设置是否显示 FPS
  • [Sourcemap] 修复使用 Chrome 调试脚本时 sourcemap 源码内容错误的问题
  • [CodeEditor] 修复内置代码编辑器中按 Ctrl+Z,主窗口也会接收撤销事件的问题
  • [Console] 编译失败时,显示包括报错列的更详细的报错信息
  • [Editor] 在使用的自定义引擎版本和当前编辑器不兼容时,增加弹窗提示
  • [Editor] 更新控件库图标
  • [Editor] 修复从场景中删除某组件后,从项目中删除对应脚本仍然会报错的问题
  • [Editor] 修复了图片路径中包含中文时,可能会导致导入失败的问题
  • [Editor] 修复 UMD 脚本导入为插件后在编辑器中加载会报错的问题
  • [Editor] 修复在偏好设置内设置 「步进数值」无效的问题
  • [Editor] 关闭编辑器架构内核对部分 GPU 的黑名单列表,修复版本升级带来的更多显卡不兼容编辑器 WebGL 渲染的问题
  • [Editor] 修复了在编辑器中通过代码创建一个扩展名为 txt 的资源会报错的问题
  • [Editor] 修复了切换布局后,属性检查器会不停快速切换,以及切换布局前的选择不会清空的问题
  • [Editor] 为资源引用丢失报错增加详细的引用位置信息
  • [Editor] 场景中组件脚本丢失时,现在会提供详细的脚本引用位置信息
  • [Editor] 修复编译过程较长时容易出现 worker timed out 的问题
  • [Editor] 修复了导入为插件的脚本文件路径不支持空格的问题
  • [Editor] 为 coffeescript 资源增加了 sourcemap,解决新建脚本时报错的问题
  • [Editor] 修复了登录信息过期后不能及时提示重新登录的问题

引擎

  • [Engine] 对 instantiate 性能进行优化,除了提高运行时创建节点的效率外,也提高了编辑器里场景打开的速度
  • [Engine] 优化场景加载时的反序列化操作
  • [Engine] 合并 cocos2d-x v3.14 web 版优化,包括:
    • 减少 visit 的调用栈深度
    • 减少 onEnter/onExit/cleanup 的调用栈深度
    • 降低 ActionManager/Scheduler/EventManager 的内存使用
    • 降低 Color 内存使用
    • 优化 RenderCmd 和 SGNode 构造性能
    • 减少 updateProjectionUniform 调用
    • 优化 Vertex 数据计算性能
  • [Engine] 修复大量热更新问题,包括:
    • (重要)彻底隔离临时更新文件夹和本地缓存文件夹,避免前者失败时污染后者,在确认新版本更新完成时才会将临时更新文件夹合并到本地缓存文件夹中(不会删除旧的本地缓存文件)
    • (重要)绑定 Downloader file task 接口(不支持 data task)
    • (重要)压缩文件的解压逻辑前置到 fileSuccess 之前,保障解压成功才算是文件正确更新
    • 用 manifest 中的 size 字段来收集文件大小数据,更快获得准确的字节级进度
    • 修复 Android 断点续传支持和一些特殊情况下的更新 bug
    • 支持 manifest 间比较的 API:setVersionCompareHandle
    • 支持下载文件后的校验回调:setVerifyCallback
    • 支持设置更新时最大文件并发数 setMaxConcurrentTask
    • 保障 tempManifest 的正确保存,使得进度信息可以正确存储
    • 延迟文件请求到文件夹创建逻辑之后,确保路径正常
    • 读取 App Package 内部 manifest 时强制清空 search path,避免读取到缓存 manifest
  • [Engine] 允许 cc.loader.getRes 和 releaseRes 传入类型参数
  • [Engine] 重命名 cc.loader.loadResAll 为 loadResDir,明确传入参数是一个文件夹的 url,增加 releaseResDir 接口用于释放整个文件夹的资源
  • [Engine] 现在位图字体文件也可以被场景预加载
  • [Engine] 避免使用 https 加载资源时的贴图绑定错误
  • [Engine] 修复 loadRes 一个 prefab 后若资源还没拉取到,在下一个引擎 update 中 getRes 会得到错误的 prefab 的问题
  • [Engine] 修复了 cc.loader.load 请求失败时没有回调的问题
  • [Engine] 修复了加载 Prefab 时会出现反复加载同一个 JSON 资源的问题
  • [Engine] cc.Loader._cache 里使用资源的 url 索引资源,对于非 raw asset,url 在 AssetLibrary 中找不到的情况下,使用 uuid 作为索引
  • [Engine] 修复场景资源自动释放时,BitmapFont 对应的字体文件不会被释放的问题
  • [Engine] 修复模拟器会加载非原生插件脚本的问题
  • [Engine] 修复了 iOS 平台上 AudioDecoder 编译报错问题
  • [Engine] 修复了切换场景后,SystemEvent 无法重新注册,导致事件失效的问题
  • [Engine] 修复了小米 note 等机型上使用 x5 内核浏览器还会出现闪屏的问题
  • [Engine] 分离引擎内的日志和报错信息到外部文件中,打包 release 时不包括日志和报错信息字符内容,需要手动前往报错提示的 url 查找信息。
  • [Engine] 修复开启 Canvas 脏矩形渲染优化时,图像周围可能出现的黑边问题
  • [Engine] 通过从 release 版本剥离报错日志信息,和减少编辑器专用的代码,减少了约 80k 的引擎核心包体积
  • [Engine] 更新构建 Mac 桌面应用时使用的 glfw 第三方库,修复 Canvas 组件同时勾选 Fit Height 和 Fit Width 时在 Mac 平台的显示问题
  • [Engine] 修复 EVENT_GAME_INITED 事件触发时,引擎仍未初始化完成,导致调用 cc.loader.loadRes 失败的问题
  • [Engine] 修复 JSB 环境下 XMLHttpRequest 没有正确返回错误到 JS 回调,仅提示在原生层的问题
  • [Engine] 修复 cc.instantiate 时会引入 t1 之类的全局变量问题
  • [Engine] 修复 Action 对象在新内存模型中没有被引用,导致动作对象在垃圾回收时可能被误删的问题
  • [Engine] 在原生平台使用新的软件音频解码库,解决在部分芯片上解码 mp3 和 ogg 音频时崩溃的问题
  • [Engine] 修复 sprite 旋转到特定角度时,如果约束框超出 viewport 范围,会整个被自动剔除的问题
  • [Engine] 修复魅族系统浏览器无法开启 WebGL 模式的问题
  • [Engine] 修复嵌套 Mask 时使用 inverted 反向遮罩会出现显示错误的问题
  • [Engine] 修复了可能将加载的 mp4 视频文件按照音频解析导致的错误问题
  • [Engine] 修复了销毁带有 Missing Script 组件节点时的报错问题
  • [Engine] 修复了 cc.Color 设为红色时渲染不正确的问题
  • [Engine] 修复了 Prefab 可能出现加载失败的问题
  • [Engine] 修复了以 dom 模式加载音频时回调错误导致加载中断的问题
  • [Engine] color.fromHEX 接口支持只传入 rgb 数据
  • [Audio] 修复了在 iOS 平台设置声音音量时可能会导致音频不受控制的问题
  • [Audio] 修复了音频资源加载时的可能会出现请求数量增加的问题
  • [Loader] 修复部分情况 raw assets 没有被正确设置类型的问题,对于带参数的 url,资源 id 应该是原始的 url,不应该对字符串进行修改
  • [Loader] 修复 cc.loader._getReferenceKey 接口获取结果错误导致无法正常自动释放资源,也无法正常设置资源不可释放的问题
  • [Loader] 修复 LoadingItem.dependKeys 可能出现重复内容的问题
  • [JSB] 修复部分转换函数可能被传入空指针导致崩溃的问题

组件

  • [Label] 支持位图字体和其他 Sprite 一起进行批量渲染,只需要把 bmfont 使用的贴图和其他 Sprite 用的贴图放在同一个自动图集配置路径下就可以生效
  • [Label] 增加了新的字体资源类型 LabelAtlas(艺术数字),和原来 cocos2d-x 引擎的 LabelAtlas 配置方法相同
  • [DragonBones] 添加了 mesh 显示的支持
  • [Spine] 升级 Spine 的 JS 运行时到 3.x 版本,支持 Mesh 显示
  • [Spine] 升级 C++ 引擎中的 Spine runtime 到 3.5.35,和 JS 版引擎保持一致
  • [Widget] 增加了 target 属性,可以指定一个非直接父级节点(可以是父节点的父节点)
  • [Widget] 添加 updateAlignment 接口,用于手动刷新对齐
  • [Widget] 修复所在节点缩放为 0 时,width 会变成无穷大的错误
  • [TiledMap] 修复重新打开场景时,地图中保存节点的顺序可能会错掉的问题
  • [ParticleSystem] 修复了当粒子进行多次加载的时候,会出现当需要获取粒子时资源已经被清除了的警告
  • [ParticleSystem] 修复了粒子组件,加载后不会自动加载粒子资源的.png文件的问题
  • [Toggle] 修复 Toggle 组件在调用 check 和 uncheck 函数时未发送 Component.EventHandler 的回调
  • [Graphics] 修复 native 上画曲线的时候有可能导致崩溃的问题
  • [Mask] 新增 Image_Stencil 模式,可以设置一个 SpriteFrame 来对子节点进行遮挡或剔除
  • [Animation] 修复了拖拽修改关键帧位置时鼠标锁死的问题
  • [Animation] 修复了动画编辑器选择 clip 的 select 下拉菜单出现位置错误
  • [Animation] 修复退出 Animation 编辑时会弹出两次确认框的问题
  • [Animation] 修复了修改动画资源后保存失败的问题
  • [Animation] 修复了父节点和子节点上都有动画组件和 clip 时,子节点无法正确显示 clip 选择下拉菜单的问题
  • [Animation] 修复了双击节点之间的蓝色连线时会报错并导致后续点击事件失效的问题
  • [RichText] 修复富文本使用自定义字体时,原生平台显示效果不正确的问题
  • [RichText] 增加描边支持,通过标签 <outline color=xxx width=xxx> 另外,outline 标签也支持 click 事件
  • [Label] 修复当排版模式设置为 SHRINK 时,用代码切换场景会导致卡死无法切换的问题
  • [Label] 修复了 BMFont 在启用场景延迟加载的时候报错的问题
  • [Label] 修复原生平台上 BMFont 在某些情况下导致不同的 Label 使用同样纹理的问题
  • [Label] 修复了系统字体 和 TTF 在 opacity 属性修改的时候会重新生成贴图的问题,提高性能
  • [Label] 修复了系统字体使用动态加载的方式去设置 ttf,会导致字体大小变化的问题
  • [EditBox] 修复了 landscape 模式下面输入的文字无法显示的问题
  • [EditBox] 修复初始字符在网页端无法显示的问题
  • [Spine] 修复了 Spine 数据验证失败时场景不能打开的问题
  • [Spine] 修复了使用 SGSkeleton.getBoundingBox 方法时出错的问题
  • [Spine] 修复升级 Spine runtime 后事件机制无法正常工作的问题
  • [Spine] 修复 Spine 组件在更换 skeletonData 属性之后注册的事件监听器会丢失的问题instantiate
2016年12月22日
V1.3.3 版本

在 1.4 版本的诸多新功能和优化跟大家见面之前,1.3.3 补丁版本也悄悄上线了,除了社区反馈的重大问题修复,我们还添加了两个新功能:

Mask 组件增加 Stencil 模式

mask-stencil

Mask 组件终于补完了使用任意贴图的 alpha 信息作为遮罩功能,只要模式选择 Stencil,就可以拖拽一个 SpriteFrame 资源到组件里,并使用该图像资源的 alpha 信息对组件所在节点的所有子节点进行遮挡或剔除。

要注意 Alpha Threshold 参数用于控制参与剔除的 alpha 阈值,当设置为 1 时不做任何剔除。另外还增加了一个通用属性 Inverted,可以用于反转遮罩的效果,该属性对于矩形和椭圆形的遮罩也同样适用!

自动图集配置增加剔除未被引用资源的开关

autoaltas-exclude-unref

根据部分开发者反馈,自动图集配置所在目录下并非所有贴图都会被使用,希望能够在构建时自动剔除未被引用的资源。

我们为自动图集配置资源增加了「不包含未被引用资源」的选项开关,默认关闭,当勾选后会在构建阶段对所有即将打包的图片资源进行引用检查,如果未被场景和 prefab 引用就不会被打包进自动图集中。

Cocos Creator_v1.3.3完整改动列表

  • [AutoAtlas] 自动合图配置文件里增加选项,支持剔除当前文件夹下没被引用过的图片
  • [Engine] 为 cc.sys.language 里增加土耳其、罗马尼亚、保加利亚、乌克兰的语言代码
  • [Engine] 修复 iOS 平台上编译时出现的声音模块错误问题
  • [Engine] 修复监听重力感应事件时的错误
  • [Builder] 修复 Keystore 面板创建的 keystore validity 无效的问题
  • [Builder] 修复了开发者对 AndroidManifest.xml 文件的修改在编译时可能丢失的问题
  • [ParticleSystem] 修复当 ParticleSystem 加载 textureUuid 为 undefined 时,会导致 ParticleSystem 重复加载死循环的问题
  • [Engine] 修复使用 mixins 导致原生平台运行脚本报错的问题
  • [RichText] 修复自定义字体为空时在 safari 上面创建出错的问题
  • [RichText] 修复富文本使用自定义字体时,原生平台显示效果不正确的问题
  • [Label] 修复 Resize Height 模式在编辑器里面修改 size 的时候不会触发 size-changed 事件的问题
  • [Label] 修复 .fnt 文件无法被场景预加载的问题
  • [EditBox] 修复原生平台上 EditBox 编辑完后,Label 显示位置不正确的问题
  • [Mask] 添加 Image Stencil 模式,可以指定一张贴图作为遮罩
  • [Spine] 修复原生平台上使用 spine 可能会导致崩溃的问题

Cocos Creator_v1.3.2改动列表

  • [RichText] 增加自定义 TTF 字体支持
  • [DragonBones] 修复了通过代码初始化 DragonBones 组件的 dragonAsset 属性会报错和崩溃的问题
  • [Engine] 修复了使用 renderTexture 截图后 viewport 和原来不一致的问题
  • [Label] 修复了 LabelOutline 和 RichText 下划线在 iOS 和 Android 平台颜色不正确的问题
  • [Loader] 修复了 cc.loader.loadRescc.loader.load 可能无法识别相同资源正确使用缓存的问题
  • [Loader] release 现在可以通过传入 url 释放没有 uuid 的贴图资源
  • [Engine] 对 iOS 上的微信版本进行判断,在 iOS 9 上使用 Canvas 渲染(由于微信 UIWebView 的 bug),在 iOS 10 上使用 WebGL 渲染
  • [Action] 修复了 rotateBy 旋转轴向参数在原生平台上不能分别控制两个轴向的旋转问题
  • [Prefab] 修复了 Prefab 的节点 Size 为 0 但是坐标大于 100 时,双击点击 Prefab 场景就无法正常显示的问题
  • [Builder] 构建原生项目时,如果 C++ 引擎版本发生变化,提示用户需要删除构建工程重新生成
  • [Builder] 加入构建进程保护机制,减少可能出现的进程卡死情况
  • [Builder] 构建时保存的目标路径现在支持相对路径
  • [Collider] 修复了CircleCollider 在 node 修改 anchor 后 boudingBox 计算错误的问题
  • [Editor] 修复了切换帐号登录时在主菜单上帐号信息显示异常的问题
  • [Animation] 改进 sample 方法,可以对某个特定的 animationState 进行操作,并且在 setCurrentTime 后会自动调用 sample 来更新动画状态
  • [Layout] Padding 边距现在可在不同方向分别定制
  • [PageView] 增加了新的页面排列模式,支持不规则页面大小

Cocos Creator_v1.3.1改动列表

  • [Editor] 修复了部分 Windows 10 电脑上启动 Creator 闪退的问题
  • [Editor] 修复出现 Compile error 报错消息时,解决了编译错误可能还是无法清除报错信息的问题
  • [Build] 构建 iOS 平台的项目增加 Xcode 8 支持
  • [Engine] `cc.loader.release` 现在会正确的删除缓存和自身资源内容(比如 texture, audio),同时支持释放一个资源数组。另外加入 `removeItem` 用于仅删除缓存和 `getDependsRecursively` 用于获取自身依赖资源列表(包含自身)。
  • [Engine] 修复原生平台 `setSiblingIndex` 接口可能无效的问题
  • [Engine] 修复了移动 Web 平台上强制横屏可能在初次进入或切换场景时失效的问题
  • [Engine] 修复了 isScheduled 在 Web 无效,一直返回 false 的问题
  • [Engine] 修复了 cc.loader.onProgress 没有在子队列更新的时候回调的问题
  • [Engine] 修复了安卓平台获取到的 acceleration 参数可能会和实际相反的问题
  • [Engine] 修复了原生平台 EventDispatcher 绑定错误可能导致的随机崩溃问题
  • [EditBox] 修复了在 macOS 10.12 Sierra 上 EditBox 无法正常输入的问题

上次v1.2版本大大提升了引擎性能,而这次Cocos Creator v1.3带来了多个大家呼吁已久的新功能,总会有一项是你期待已久的:

  • 富文本支持
  • Dragon Bones
  • 骨骼动画支持
  • Prefab 自动同步
  • 打包时自动合图
  • 新增 UI 控件:PageView,Toggle , Toggle Group,Slider
  • Creator for Lua 1.1 新升级,插件形式全自动工作流程
  • 全新 AudioEngine

cocoscreatorv1-3%e5%be%ae%e4%bf%a1

新增的功能里,不光有富文本、DragonBones 骨骼动画和无数新 UI 控件让你的游戏界面和角色动画具有更多的弹药和想象空间;Prefab 自动同步和自动合图功能全面提升了协作项目的工作效率,大大降低美术人员管理项目资源的成本;全新的音频引擎同时提升了稳定性和资源加载的效率;Lua 支持进一步补强,进入全图形化自动工作流时代,让 Creator 成为开发 Lua 游戏的最佳选择。

下面为大家详细介绍每个新功能的亮点,相信不会让你失望。

富文本支持 聊天姿势花样百出

64d906a6-f0ac-4d8c-ba44-b3c05b61b233

有了富文本,大伙终于可以在游戏里愉快的聊天啦!新增的富文本组件 RichText 能够根据字符串里 BBCode 标签,自动生成不同样式的文字,目前支持的标签包括 size, color, b, i, u, img 和 on,分别用来定制字体大小,字体颜色, 加粗,斜体,下划线,图片和点击事件。有了富文本的帮助,能够轻松的使用少量 UI 元素配合特定格式的数据传入来展示丰富的文本样式,可以非常容易的解决游戏内战斗信息播报或聊天频道的渲染需求。

Dragon Bones 骨骼动画支持 动画制作一气呵成

ab52d2bb-17ea-4c33-8fcd-bea78df58c52

响应广大用户的号召,我们在这个版本里加入了 Dragon Bones 这个非常流行的骨骼动画编辑工具的数据格式支持。DragonBones 组件的使用方式和 Spine 类似,只要新建组件后将 DragonBones 导出的动画数据和图集数据拖入到组件中即可马上开始使用,还可以通过组件定制如默认播放的动画、播放速度和循环次数等。

Prefab 自动同步 有效提升开发效率

Prefab 预制资源从设计之初就是希望能够让用户可以提高资源和场景元素的重复利用率,但之前的 Prefab 一旦在编辑器中被添加到场景里,就变成了静态的节点,无法自动同步 Prefab 资源的更新。这个拖欠已久的功能终于在 1.3 版本中补全了,现在在创建好 Prefab 资源后就可以选择是否需要场景中的 Prefab 实例同步资源文件的修改:

73d5a503-e7e0-4a4e-b1ca-530d08081e77

上图中表示的状态说明场景中的实例会自动同步。

181f5215-b99b-4a1c-988e-cc366818fa0b

下图中表示的状态是之前版本的默认行为,也就是该 Prefab 实例不会自动同步资源更新。 这个小功能的加入,将使静态搭建的场景更容易维护,比如一个主菜单场景由多个 UI 菜单组成,每个菜单都可以做成 Prefab 并由专人负责维护,这些人在各自修改 Prefab 并保存资源后,其他团队成员只要获取资源的变化,就会自动在场景中看到更新,而整个过程中场景数据都不需要做任何改动,大大提高了场景协作的流畅度!

新增 UI 控件:PageView,Toggle,Toggle Group,Slider

为了偿还另外一组拖欠的功能,我们一口气在这个版本加入了四个全新的 UI 控件 PageView,Toggle,Toggle Group,Slider。这些都是之前 Cocos Studio 就具有的控件,之后我们会进行 Cocos Studio 兼容性的测试,预计很快就可以支持这些从 Cocos Studio 导入带有这些控件的场景和工程。

46f05537-128d-4463-a201-db839e6643cf

随着富文本的加入和 UI 控件的补完,我们终于可以保证用户可以使用 Creator 实现任何所需的 UI 界面了,配合从 1.0 时期就非常强大的多分辨率自适应系统和功能高度集成的 Sprite 和 Label 基础渲染组件,Cocos Creator 将在重 UI 游戏的开发领域占有很大的优势。

Creator for Lua 1.1 新升级,插件形式即用即所得

在新版中,Creator for Lua 全面升级为插件形式,推出两大改进来提高开发效率和流畅度:

  • 首次以插!件!形!式!直接集成在 Creator 用户界面中。点点鼠标完成 Creator 场景到 Lua 代码的转换工作,就是这么简单有木有!
  • 提供自动构建功能。每次保存场景后,插件就会立即开始转换代码,妥妥的。

废话少说,我们来看看怎么安装使用这个神奇的插件。

安装插件

Creator for Lua 1.1 插件提供了 Windows 和 Mac 下的安装程序,执行安装程序瞬间完成安装。

然后,不好意思,没有然后了,已经装好了,ENJOY IT!

使用插件

启动 Creator,在场景里啪啪啪放一堆内容,然后选择菜单“工程 -> Lua Support -> Setup Target Project”,就可以看到目标工程设置对话框。

0ee263a1-638b-4a65-b2f8-6fb157e323b9

在这个对话框中我们只需要做三个步骤:

点击 Project Path 旁边的 “…” 按钮选择你的 Lua 工程目录; 点击 Copy Support Library 按钮(这个步骤只需要对每一个新 Lua 工程做一次); 点击 Build 按钮。 如果你还没创建 Lua 工程,可以参考下面的命令行:

$ cocos new -l lua mygame

构建出 Lua 代码后,我们就可以愉快的在 Lua 中显示 Creator 创建的场景了。

自动构建

默认情况下,并没有启用自动构建功能。所以修改场景后要更新 Lua 代码,需要重新点击 Build 按钮,或者选择菜单“工程 -> Lua Support -> Build Now”。

更省事儿的做法是在对话框中选中 “Auto Build” 选项。这样每次保存场景,就会自动更新 Lua 代码啦。

Creator for Lua 1.1 下载:

http://cocos2d-x.org/filedown/Creator-Lua-Support-1.1.3-win

http://cocos2d-x.org/filedown/Creator-Lua-Support-1.1.3-mac

AudioEngine全新升级 贴心细节让你用得更省心

在Cocos Creator v1.3 里,重构后的 New AudioEngine 仍然叫做 cc.audioEngine,但内部实现上已经脱胎换骨,解决了以下问题: 优化了预加载过程,加载完成后就可以立刻开始播放 增加了获取音频时长,获取当前播放位置等接口 增加音频播放完毕后的回调方法 优化了 Web 平台上音频播放的方式,大尺寸的音频会自动切换到 Audio 模块进行加载,节省内存开销

重构之后的音频引擎现在不再区分 Music 和 Effect 两种音频,而是都可以使用统一的接口播放。

其他重要改动

  • 增加命令行构建和打包工程,为持续集成测试铺平道路
  • 增加了指定跨项目共享资源库的功能
  • 优化内存管理模型,统一 JSB 绑定接口(cocos2d-x 3.13)
  • 优化资源缓存和加载机制
  • 重构 cc.Loader,支持每次 Load 独立的队列和更好的进度信息,解决了资源循环依赖时重复加载的问题和有几率出现同步回调的问题
  • 升级 spine runtime 库,支持 3.x 版本的 spine,修复了图像混合模式显示问题,支持 triangle 渲染命令

重要升级说明

由于图像处理库升级需要,Windows 版开始使用 64 位架构,不再支持 32 位的 windows 系统。带来的好处是编辑器内处理大量图片资源时的效率提升了至少5倍,而且能够支持新兴的图片格式 Webp。 Android 构建时将会列出本地已经安装的 API Level (在 android-sdk/platforms 里,通常以 android-10 这样的子目录形式出现),并可以由开发者自主选择编译时使用的 API Level,不再强制使用某一特定版本的 API Level。 Creator 的手册文档已经开源,英文文档比起中文版还欠缺很多内容,欢迎大家一起进行勘误、补完、翻译

地址:https://github.com/cocos-creator/creator-docs

完整改动列表

编辑器

  • [Installer] Windows 安装包里增加了自动安装 Visual Studio 2015 的安装选项
  • [Build] Android 平台增加 API Level 选择菜单,根据用户指定的 SDK 目录下的 platforms 中的内容列出可选的 API Level,并且在构建时自动修改相关的设置
  • [Build] 增加使用命令行构建项目的功能
  • [Build] 为 binary 模板添加 Android Studio 支持
  • [Build] 修复了构建面板中设置的屏幕朝向在 Web 平台第一次启动时不生效的问题
  • [Build] 选择 android 平台时的 keystore 密码现在会用密码格式显示
  • [Build] 修复了在 Mac 系统当项目资源很多时,构建可能会报错 too many open files 的问题
  • [Build] 修复了脚本放在 resources 目录下时,构建会报错的问题
  • [Build] 修复了构建出的 Android Studio 项目生成的 application 名称错误问题
  • [Build] 当引擎路径中有空格时,构建时会给出正确的错误信息
  • [Package] 修复了无法正确 watch 用户插件的改动问题,现在可以在编辑器打开的状态下随意修改用户插件并立刻获得刷新
  • [Assets] 优化了图集中的 SpriteFrame 资源缩略图标的渲染逻辑,解决了部分资源较多项目打开过程中可能卡死的问题
  • [Assets] 增加自动打包图集功能,需要在存放碎图的文件夹新建一个 自动图集配置 资源,之后就会在构建阶段将碎图自动生成合图进入打包。
  • [Assets] 为图集中的 SpriteFrame 资源增加了缩略图标显示
  • [Assets] 修复了导入大量资源时,有可能重复触发 compile 操作的问题
  • [Assets] 资源管理器搜索栏增加搜索 uuid 的功能,输入u: xxxxx 即可通过 uuid 进行搜索
  • [Assets] 在资源管理器里的资源右键菜单中增加「查找使用」功能,可以过滤出所有引用该资源的其他资源(包括场景和 prefab)
  • [Assets] 在导入 custom asset 出错时,提供更明确的提示信息
  • [Properties] 修复了 tooltip 在 array 和 object 属性上不显示的问题
  • [Properties] 修复了 reset node 操作无效的问题
  • [Properties] 修复了属性类型和已绑定数据不符时,不会正确显示报错信息和 reset 按钮的问题
  • [Console] 在 clear error 的时候现在不会清除编译失败的报错条目
  • [Editor] 修复了使用撤销命令还原一个值为 null 的属性时不会触发场景变化的问题
  • [Editor] 修复了 Undo 对象删除操作耗时比较高时,updateAnimatingInEditMode 会报错的问题
  • [Editor] 修复了项目设置面板里设置的初始运行场景,在使用模拟器运行时不会生效的问题
  • [Editor] 修复了 windows 平台经常会遇到 undo/redo 操作失灵的问题
  • [Editor] 第三方脚本导入为插件后,如果其中含有 ES6 语法,发布时添加报错提示
  • [Editor] 增加了命令行参数 --mount 来指定外部资源路径。(可以通过多个 --mount 参数来 mount 多个路径,参数值可以为绝对路径或者相对于工程的相对路径)增加命令行参数 --writable 来指定是否可以修改保存外部资源路径里的文件。
  • [Editor] 使用全新的图形处理库,解决了导入过大图片(8192x8192)时会报错的问题,并且提高了图像处理速度
  • [Editor] 修复了当项目中所有图片都进入自动图集时会导致构建失败的问题
  • [Editor] 修复了 Sliced Sprite 在编辑器切分时无法在场景中预览最新效果的问题
  • [Editor] 修复了按 Cmd/Ctrl + Q 关闭窗口时会引起报错的问题
  • [Editor] 在脚本资源勾选了 导入为插件 的情况下增加是否在原生或 Web 平台生效的选项
  • [Scene] 修复了保存场景会导致层级管理器里节点折叠状态重置的问题
  • [Scene] 修复了在场景中持续预览粒子一段时间后,再平移场景视图会严重卡顿的问题
  • [Prefab] 修复了自动同步 Prefab 的各种显示问题
  • [Prefab] 修复自动同步的 prefab 进行嵌套后,会导致场景无法打开的问题
  • [Dashboard] 修复了选择 打开其他项目 后取消,出现的项目不合法报错提示
  • [Node Tree] 修复了新建节点时,无法正确显示节点的高亮选中状态问题
  • [Node Library] 为控件库补完了 1.2 以来新增的控件类型

引擎

  • [Engine] 在所有平台限制 downloader 最大并发数,避免同时加载过多资源时的报错
  • [Engine] 修复了 grayscale shader 无法使用的问题
  • [Engine] 移除了用 loadRes 加载 json 资源时 No need to release non-cached asset 的警告
  • [Engine] 修复了构建到 Web 平台合并资源 json 后仍然有可能出现多次请求的问题
  • [Engine] systemEvent 现在会继承 EventTarget,并支持用 cc.systemEvent.on / once / off 来注册或取消注册系统事件,之前需要用 eventListener 来监听的键盘和重力感应事件现在可以统一用 on off 注册和取消了。
  • [Engine] 重构 cc.Loader,支持每次 Load 独立的队列和更好的进度信息,解决了资源循环依赖时重复加载的问题和有几率出现同步回调的问题
  • [Engine] 提供 Loader 每个加载任务独立的 context,解决运行时合并后的 JSON 对象没办法自动释放的问题
  • [Engine] 修复了微信桌面客户端里运行游戏时无法响应点击事件的问题
  • [Engine] 加入触摸点超时设置,用于解决微信 x5 内核上手指移出屏幕时不能正确触发 touchcancel 事件造成后续无法交互的问题,如果需要保留长时间静止的触摸点,需要手动修改超时的时长设置 TOUCH_TIMEOUT
  • [JSB] 重构了 JS-binding 的接口,提升了稳定性,绑定 API 现在和 cocos2d-x 3.13 保持一致
  • [Audio] 升级声音引擎到 New AudioEngine,解决了之前一些声音播放的兼容性问题
  • [Audio] 由 Loader 管理 Audio 的内存,让 loader 可以完全释放 Audio 资源
  • [Audio] 修复了 AudioSource 组件在切换场景后还会继续播放的问题
  • [Action] 修复了 cc.flipX 在原生平台会引起崩溃的问题

组件和模块

  • [DB] 添加 dragonBones 组件,支持 DragonBones 格式的骨骼动画
  • [Component] 增加 Slider 滑动条控件
  • [Component] 增加 Toggle 和 ToggleGroup 控件
  • [RichText] 增加了富文本组件的支持,使用 bbcode 格式的标签写法,目前支持颜色,字号,加粗,斜体和点击事件
  • [PageView] 新增翻页容器组件
  • [TiledMap] 增加了 ObjectGroup 显示的支持
  • [TiledMap] 修复了删除 Tiledmap 节点后再 undo 无法显示的问题
  • [TiledMap] 修复当 tmx 文件中使用了 tsx 文件时,可能会遇到显示错乱的问题
  • [TiledMap] 修复了当使用不同的地图资源重复初始化同一个 TiledMap 组件时会遇到的报错问题
  • [TiledMap] 修复了原生引擎中移动地图可能会出现接缝的问题
  • [TiledMap] 修复了 TiledLayer 的 setTileGID 接口在传入参数不足时可能产生错误的问题
  • [TiledMap] 修复通过 cc.TiledLayer.getTileAt() 获取的 tile 节点,调用 setVisible(false) 在 canvas 渲染模式下无效的问题。
  • [Spine] 在 Skeleton 组件上增加了 premultipliedAlpha 处理预乘图像,当图片的透明区域出现色块时需要关闭该选项,当图片的半透明区域颜色变黑时需要启用该选项
  • [Spine] 升级 spine runtime 库,支持 3.x 版本的 spine,修复了图像混合模式显示问题,支持 triangle 渲染命令
  • [Button] 新增 Scale Transition,添加重置 button size 到 target 节点尺寸的按钮
  • [Button] 当 button 的 interactable 设为 false 时,如果没有设置相应的 disable 状态,会自动将 normal 状态的贴图变灰显示
  • [ScrollView] 将桌面平台的鼠标滚轮操作修改为更符合 Windows 操作系统习惯的滚动方式
  • [Graphics] 修复了当用户添加 graphics 组件时,会重置自身节点的 Size 为 0 的问题
  • [Graphics] 修复了未定义属性的 get/set 警告
  • [Graphics] 修复了在 canvas 下需要调用两次 clear 才能清除掉绘制的内容的问题
  • [Animation] 修复了动画事件回调中调用 play 无效的问题
  • [Animation] 修复了从指定帧开始播放动画,前面的帧事件还会被回调的问题
  • [Collider] 修复了在 onCollisionEnter 中修改 node 的 group 无法正确更新的问题
  • [Collider] 修复了在节点上新增一个 Circle Collider 组件就会一直报错的问题
  • [Widget] 修复了 CCWidgetManager 在 Scrollview 大小改变时出现 _widget 报错问题
  • [Widget] 修复了属性检查器中的 topbottom 复选框消失的问题
  • [EditBox] 修复通过 prefab 方式实例化后直接设置 placeholder 报错问题
  • [EditBox] 新增 setFocus,stayOnTop 属性,当 stayOnTop 为 true 则,可以通过设置 tabIndex 来控件 Tab 键的 focus 行为。在微信的 iframe 里使用 EditBox 时,需要把 stayOnTop 属性设置为 true
  • [EditBox] 修改了 maxLength 属性的行为,当设置为 0 时禁止用户输入,当设置为 -1 时不限制最大输入字符长度
  • [Label] 修复了模式为 Resize Height 的 Label 文字内容设为空后再添加内容换行也不会生效的问题
  • [Label] 修复了在 Node 非激活状态下添加 Label 组件,导致 debounce 函数 warning 报错的问题
  • [Label] 修复了 LabelOutline 组件在适配 TTF 字体时颜色错误的问题
  • [VideoPlayer] 添加 META_LOADEDCLICKEDREADY_TO_PLAY 事件。现在 toggle visible 会暂停视频播放,并且在视频控件不可见的情况下面不能播放视频。同时,统一 web 和 jsb 的 video 的表现。
  • [Component] 新增一个生命周期回调 resetInEditor,这个方法只在第一次添加组件时调用(如果是场景重新载入,这个方法不会被调用)。另外这个方法也会在点击组件菜单的 reset 后调用。
  • [Component] 为 cc.Component.EventHandler 添加传参,目前只允许传入一个 string 参数
2016年09月22日
V1.2.2 版本

1.2.2 是 1.3 版本更新之前最后一个 patch 发布,主要改动有:

- Prefab 增加了自动同步场景中的实例的功能,默认创建的 Prefab 采用手动同步方式,需要修改为自动同步才能使用新功能

- 通过 `cc.view.enableAntiAlias(false)` 接口,提供针对像素风图像禁用图像线性平滑的方案

- 大大改善了 Web 发布版本页面初始化的时间,微信打开时的白屏时间大大减少了

- 大量节点事件系统方面的问题修复

引擎

- [Engine] 增加了 `cc.view.enableAntiAlias(false)` 接口,可以禁用线性采样,显示锐利的像素边缘

- [Engine] 增加了 `cc.view.enableAntiAlias(false)` 接口在原生平台的支持

- [Engine] 修复了部分竖屏较宽的移动设备上浏览器中弹出软键盘时,屏幕朝向会变化的问题

- [Engine] 修复了在 start 函数中给一个 active 为 false 的节点添加事件,事件在 web 端表现正常不响应,但在 native 端,依然会响应的问题

- [Engine] 改善了 Web 平台发布页面的结构,大幅提高页面初始化速度(减少白屏时间)

- [Engine] 修复在节点激活之前注册事件,激活后不会生效的问题

- [Engine] 修复了 Web 平台在切换浏览器 tab 或浏览器激活状态后部分节点已注册事件失效的问题

- [Engine] 修复了加载较大 TTF 资源时可能无法正确获得加载完成状态的问题

- [Engine] 修复了移动浏览器上使用 deprecated 接口会直接报错的问题

- [Action] 修复了 tintTo 和 tintBy 在原生平台工作不正常的问题

- [Action] 修复了使用 cc.targetedAction 时的报错问题

编辑器

- [Animation] 修复了动画编辑器指针线会出现断开的情况

- [Animation] 修复了动画编辑中拖拽节点的时候,position 有可能会被重置为拖拽前数据的问题

- [Animation] 修复了 Undo 对象删除操作耗时比较高时,updateAnimatingInEditMode 会报错的问题

- [Console] 增加了 ignore case 开关来决定过滤日志时是否匹配大小写。

- [SDK] 修复了构建 Web 平台时插入的 AnySDK 运行库地址错误的问题

- [Prefab] 为 Prefab 增加了自动更新场景中实例的功能,现在可以手动选择 Prefab 是否需要自动刷新

组件

- [Label+Widget] 修复了 Label 的 Overflow 设为 Shrink,string 为空,Widget 只对齐一边时,在原生平台上会卡死的问题

- [Particle] 修复了没有设置 texture 属性时在原生平台运行会崩溃的问题

- [Tilemap] 修复了 Tiledmap 删除后再 undo 无法显示的问题

- [Graphics] 修复了在大小写敏感的操作系统中会产生模块无法找到的报错问题

- [EditBox] 修复了在 mac 平台下面 resize 的效果不对的问题

- [Button] 没有指定 hover sprite 时,现在会去掉 mouse over 事件的注册

- [ScrollView] 修复编辑器里面保存场景时,ScrollView 的 content 的位置会随机跳动的问题

- [ScrollView] 修复了 Scrollview 组件被禁用时还能够响应 touch 事件的问题

- [ScrollView] 添加了 TOUCH_UP 事件回调

2016年08月29日
V1.2.1 版本

Cocos Creator 是以内容创作为核心的游戏开发工具,在 Cocos2d-x 基础上实现了彻底脚本化、组件化和数据驱动等特点。

当前最新版本:v1.2.1

更新时间:2016年08月29日

更新日志:

产品介绍:

根据开发者的反馈和建议,我们在这个新版本里加大了对 AnySDK H5 平台的支持,让游戏发布更为便捷顺畅;进一步优化了场景切换时的资源内存管理,可有效降低内存占用 20%~50%;同时修复了多项bug,进一步优化了用户体验,相信你一定会在这个新版里找到不少惊喜。
 

Windows版安装特别说明
 

如果 Windows 安装版无法完成安装,或出现注册表问题,请下载绿色版使用,下载地址  

增加 AnySDK H5 平台运行库支持
 



在「构建发布」界面的移动端 Web 平台上,我们添加了一个 AnySDK 的选项,勾选后即可在构建出的 index.html 页面中插入 AnySDK H5 平台的运行库链接代码。该代码会自动获取云端最新的 AnySDK 运行库插入到页面中,这样就可以实现同样一套接入代码,自动生成原生和 H5 的渠道包了,平均每个渠道接入只需 5 分钟!
 

自动释放场景资源,内存占用可下降20%~50%


在资源管理器里选中场景资源后,可以发现增加了「自动释放资源」的选项,勾选之后在切换场景时会自动对新旧场景的资源引用进行对比,然后释放掉旧场景中不需要的资源,再加载新场景中新增的资源。对于频繁切换场景的重关卡内容的游戏可有效降低内存占用 20%~50%。
 

Widget 控件新增了基于中心对齐时的距离设置
 


 

这个版本里,我们响应很多开发者朋友的要求,为 Widget 组件的居中对齐选项也增加了距离设置,现在在勾选水平中心对齐或垂直中心对齐后,就可以在显示出的距离设置对话框中输入像素数值或百分比数值来规定子元素距离父元素中心的距离了,输入负数即可指定子元素在父元素中心点偏左。


编辑器

  • [Assets] 修复了 Assets 面板显示搜索结果时,重命名文件会报错的问题
  • [Preview] 修复了浏览器预览时使用 console.log(node) 时会出现大量报错信息的问题
  • [Preview] 修复了在浏览器预览场景时,如果进入 prefab 编辑模式并点击保存,浏览器里会报错的问题
  • [Editor] 修复保存场景后马上切换场景,可能会覆盖另一个场景的问题
  • [Dashboard] 修复了 windows 上不能将项目新建在根目录的问题
  • [Build] 修复了构建时引擎模块化剪裁可能失效的问题
  • [Build] 修复了打开构建面板后,删除场景,构建后游戏会黑屏的问题
  • [Preference] 在「数据编辑」分页里添加取消自动编译项目脚本的功能,关闭后必须按 F7 才会编译
  • [Code-Editor] 修复了内置代码编辑器中 tab 键不起作用的问题
  • [Console] 修复了点击状态栏里的报错信息,不能正确跳转到控制台的问题


引擎

  • [Engine] 修复了部分 UI 组件可能引起内存泄露的问题
  • [Engine] 修复了在移动设备上无法强制横屏的问题
  • [Engine] 修复了 Mouse hover 事件在场景切换后没有正确清除的问题
  • [Engine] 修复了设置导入为插件的脚本中,定义全局变量会报错的问题
  • [Engine] 修复了Web 平台和 Native 平台 skew 计算结果不统一的问题
  • [Render] 修复了一个导致 Bmfont 无法正确被批量渲染的问题
  • [Graphics] 修复了 arc 绘制时设置 counterclockwise 方向不对的问题
  • [Graphics] 修复了在 Windows 平台使用部分接口会造成崩溃的问题
  • [Action] 修复了使用 ScaleBy, SkewBy 动作时会出现 'too much recursion' 的提示
  • [JSB] socket.io 的 send 方法现在在原生平台也可以传入对象类型的参数了
  • [JSB] 现在原生平台下的 runAction 也会返回动作实例了


组件

  • [Component] 修复了组件上属性很多时可能出现属性引用获取失败,全部显示为None的问题
  • [Component] 修复了颜色拾取器不能正确保存颜色的问题
  • [Button] 修复了 Transition 为 color 的时候,修改 interactable = false 表现不正确
  • [Mask] 修复了先添加事件后加入节点树,导致 Mask 在事件处理中不生效的问题
  • [Animation] 修复了动画里添加 Collider.size 的属性和关键帧时,size 的值会被强制设为0的问题
  • [Animation] 修复了在另一个组件的 onEnable 中设置了动画节点的 active 为 false 时,动画不会停止播放的问题
  • [Animation] 修复了动画编辑状态下编译脚本后,场景中移动轨迹会消失掉的问题
  • [ScrollView] 修复了滚动到最下方并移除最后一个列表元素时,scrollBar 没有正确更新的问题
  • [ScrollView] 只有在绑定了 content 节点时才进行事件注册
  • [ScrollView] 添加了 cancelInnerEvents 属性,用来控制是否阻断 ScrollView 上面的 item 的 touch move 和 touch end 事件
  • [ScrollView] 修复 ScrollBar 在切换 Scrollview 节点的激活状态时会消失的问题
  • [ScrollView] 修复了在 iOS 平台上上边部分可能会有一段空白区域的问题
  • [Label] 修复了 WebGL 渲染模式下 Label 背后有锯齿严重的底图,而且无法修改透明度的问题
  • [Label] 修复了 LabelOutline 会导致 shrink overflow 算法卡死编辑器的问题
  • [Label] 修复场景中加载多个 TTF 时,Label 可能会使用错误的 TTF 字体的问题
  • [Label] 在编辑器非激活状态下增加 BitmapFont 资源,打开项目时会造成编辑器卡死的问题
  • [VideoPlayer] 添加了 currentTime,duration 和 isPlaying 接口,用于获取当前播放进度,总时间和是否正在播放的状态
  • [Widget] 修复了 Widget 运行预览后会自动在编辑器中关闭的问题
  • [SpriteDistortion] 修复了球状渲染组件在 1.2 重构 WebGL 渲染后失效的问题
  • [EditBox] 修复了 input type为 Number 时,maxLength 无效的问题
2016年08月08日
V1.2.0 版本

通过之前的 1.0 和 1.1 两个大版本我们补全了基本的工作流程和工具链,开发者已经具备了开发绝大部分游戏类型的可能。而在炎炎夏日中我们推出的 1.2 版本,则专注于 Web 引擎性能的提升,前几个月开始使用 Creator 开发游戏的朋友们现在在产品上线前可以获得一次免费的性能提升啦!

1. 版本亮点:

1.1HTML5

在Cocos Creator v1.2的版本中,我们投入了大量精力对HTML5性能进行优化。在无runtime的HTML5裸跑环境中,新版本Creator v1.2相比两个月前的v1.1:

  • WebGL性能提升5~10倍,主要得益于增加了WebGL上的自动批量渲染和自动剪裁功能
  • Canvas性能提升2倍,得益于该版本中增加的脏矩形功能
  • Web发布模式下,通过模块配置功能,使得引擎发布的体积缩小30%

2.Native

对于Native用户,我们在v1.2版本里终于完成了呼声最高的两个功能:

  • Lua支持,Lua支持,Luuuuuuuuuua支持!
  • AnySDK打包流程的支持。

3.通用

另外还有一些我认为比较突出的功能有:

  • 新增 cc.Graphics 图形绘制模块,跨HTML5和Native通用
  • 新增 WebView 控件
  • 增加了动画播放的回调事件,包括play, stop, pause, resume, lastframe,finished等
  • 对 Android 平台的渲染进行了优化,针对部分机型提升了性能

下面我给大家逐项介绍。

1.1 HTML5裸跑性能优化

WebGL

在 Cocos2d-x 3.11 和 3.12 两个版本里进行的 WebGL 批量渲染优化,目前在 Cocos Creator v1.2 版本里已经基本完成了整合,在包含了大量动态精灵图的 Bunnymark 项目中,Creator v1.2 相对 v1.1 版本的 WebGL 渲染性能提升了5倍。此外重构后的 Web 渲染模块还包括针对视窗进行自动剪裁,屏幕外面的精灵和文字现在不会再消耗渲染性能了,还能够支持任意尺寸的巨大 Tilemap 瓦片图等。

Canvas

除了WebGL,我们也在 Canvas 上增加了脏矩形算法的渲染优化,这能在静态场景带来2倍以上的性能提升,v1.2 新版本中对 Canvas 渲染模式默认开启脏矩形优化,如果您的场景包括很多动态内容,也可以通过 API 将脏矩形优化关闭。

对于脏矩形优化,我们用触控科技独家代理的顽石科技《二战风云H5》作为优化案例,可以看到在不同场景里,性能都得到了提升。

像下图这样堆砌了大量UI元素,又没有太多动画的世界场景,应用脏矩形后获得了最明显的帧率提升。

关于脏矩形优化的更多细节,请参考文档Creator脏矩形优化文档。要注意在Creator 1.2中,脏矩形默认处于开启状态。

1.2 Lua 支持预览版

对于社区里呼声最高的Lua支持,经过Quick-x作者廖宇雷和Creator开发团队两个月的努力,我们终于在这个版本里实现了!Lua 开发者现在可以使用 Cocos Creator 来搭建场景和 UI ,并在 Lua 游戏中调用、加载、正常显示和操作。

目前已完成的工作流程包括:

  • 在 Creator 中编辑静态场景(包括节点树和大部分内置控件)和项目资源
  • 构建发布成 Lua 输出格式
  • 通过官方转换工具将场景和资源输出成 lua 文件
  • 使用 cocos2d-x Lua 引擎的标准工作流程完成后续脚本编写和编译运行
当前版本支持的功能:
  • Sprite - 精灵:图像显示
  • Canvas - 画布:主要用于自动布局
  • Widget - 部件:可以配合 Canvas 设置自动布局和各种对齐方式
  • Button - 按钮:响应玩家操作
  • EditBox - 编辑框:用于玩家输入文字
  • ParticleSystem - 粒子系统:显示粒子效果
  • TileMap - 地图:显示使用 Tiled 编辑的地图
  • Animation - 动画:仅支持帧动画
  • Label (System Font) - 文字标签:仅支持系统字体
  • Component with Lifetime events - 组件及其生命周期管理

Cocos Creator的Lua插件下载地址:http://cocos2d-x.org/filedown/CocosCreator-Lua-v1.0

更多Lua支持的细节,请阅读Creator的Lua支持文档1.3 Graphics 图形绘制模块,支持SVG格式

从 0.7 版到 1.1 版,深受大家喜爱的 DrawNode 图形绘制接口始终处于缺席状态,在 v1.2 版本中我们终于迎来了图形绘制 API 的威!力!加!强!版! cc.Graphics。这个新的图形绘制接口除了能够完爆 DrawNode 的原有功能之外,还能直接兼容通用的 SVG 数据格式,互联网上数以万计的 SVG 矢量图像现在都可以直接在 Creator 制作的游戏中绘制出来,程序绘图爱好者赶快来尝试吧!

更多细节,请参考cc.Graphics组件参考文档

1.4 可自定义扩展的属性检查器 打开 v1.2 后最醒目的变化就是属性检查器了,为了方便开发者在开发组件时能够更灵活的定制属性控件,我们重构了整个属性检查器,除了外观上的变化,现在的属性检查器性能更高,还解决了之前版本很多人反馈的属性不能全选、拖拽时会失灵等遗留问题。现在开发者可以轻松做出像 Widget 组件那样的自定义输入控件,让你的组件更方便易用。 1.5 引擎模块化可配置,打包体积缩小30% v1.2 版本在「项目设置」面板中增加了新的分页「引擎模块」,在这个面板里您可以选择构建时哪些引擎组件会被打包,目前已经可以有效的减小打包版本中的 JavaScript 引擎 1/3 以上的体积,后续我们还会继续对核心模块进行细分和裁剪,将包体减肥进行到底。

1.6 AnySDK 内置支持 v1.2 版本构建出的原生工程将自带 AnySDK 的运行库,无需任何额外的环境配置就可以在项目中调用 AnySDK 接口并生成母包,然后在 AnySDK 软件中进行配置就可以轻松接入多渠道 SDK 了!

在下一个版本中我们将把AnySDK彻底内置到 Creator 内,以插件形式支持在 Creator 中通过图形界面直接完成 AnySDK 的配置并直接生成渠道包。

更多细节,请参考AnySDK内置支持文档

2. 完整改动列表

下面是Cocos Creator v1.2 的完整版改动列表,如果你关心自己提的新功能需求是否实现,或者BUG是否已经修复,可以在这份列表里找到答案。引擎团队一直很用心在处理社区用户的需求,有一些虽然不在版本亮点,但是仍然意义重大的功能,比如新增了WebView组件、新增了动画回调事件、新增了导出到Android Studio的选项等,都在开发中非常实用。

重大改动
  • [Build] 构建发布面板增加 Lua 引擎导出选项
  • [Engine] WebGL 渲染时加入自动批量渲染功能,通过妥善的组织合图和图片之间的渲染次序可以大幅提高性能
  • [Engine] 加入自动视窗裁剪(auto viewport culling)功能,基于 cc.visibleRect 对屏幕外的 Sprite 和 Label 节点进行剪裁
  • [Engine] 对 Web Canvas 渲染模式默认加入了脏矩形优化,大幅提升静态页面的渲染性能,并可以通过 API 关闭这个优化
  • [Engine] 原生引擎中加入 AnySDK 支持
  • [Editor] 在场景资源的属性检查器面板上添加了「延迟加载」选项,勾选后加载场景时只要完成了脚本和节点树的加载就会立刻运行,剩余的图片、plist 资源会在加载完成后自动显示
  • [Engine] 增加 cc.Graphics 图形绘制模块
  • [Preview] 在移动设备上运行预览时,可以点击浮动的齿轮按钮来呼出日志和调试界面
  • [Webview] 添加了 webview 组件,具体使用方法请参考范例

编辑器

  • [Editor] 在项目设置面板中加入了「模块设置」分页,可以通过复选来决定构建时引擎打包时包含的模块,减小不必要的包体
  • [Editor] 属性检查器已经使用新的架构重写,外观有了一定变化,另外修复之前在使用时的一些体验问题(比如点击时不能全选较长的数字)
  • [Assets] 修复资源管理器中名字带有 .. 的文件夹显示错误
  • [Assets] 修复了更新 Atlas 数据时,atlas 贴图下面的 spriteFrame 可能会显示更新之前的内容的问题
  • [Prefab] 修复了从 prefab 编辑状态退回到包含 Editbox 的场景时的报错问题
  • [Prefab] 修复了将控件库里的控件拖拽到 Prefab 节点下时会强制将 Prefab 转化为普通节点的问题
  • [Animation] 修复在编辑器中删除 AnimationClip 后,属性检查器里没有正确显示出 missing 状态,而且动画编辑器还可以继续编辑刚删除掉的 clip 的问题
  • [Animation] 修复了编辑带有 alignOnce 属性的 Widget 动画时预览无法正确生效的问题
  • [Animation] 添加了动画回调事件,包括 play, stop, pause, resume, lastframe,finished
  • [Animation] 修复了 disable Animation 组件后,如果勾选了 play on load,动画还是会被播放的问题
  • [Menu] Edit 里的全选操作现在可以正确选中层级管理器和资源管理器中的所有文件
  • [Scene] 修复了场景中反复开关 Particle 以后编辑器帧率卡顿的问题
  • [Scene] 修复了切换场景中节点的激活状态后 undo,导致节点树中显示的状态和属性检查器中显示状态不同步的问题
  • [Console] 重构了控制台消息架构,目前可以支持的消息数量没有上限
  • [Console] 修复了控制台在 windows 下不能正确显示中文日志的问题

引擎

  • [Engine] 对 Android 平台的渲染进行了优化,针对部分机型提升了性能
  • [Engine] 修复了改变节点父子关系时,子节点渲染时未能正确刷新继承自父节点的透明度问题
  • [Engine] 修复了同时加载多份Prefab资源的时候,如果有依赖的话,其中随机一个依赖项无法被加载
  • [Render] 改善了 WebGL 模式下动态字体的显示精度
  • [Render] 修复了在最新 Chrome 浏览器上渲染动画时可能会出现的不定期显示回溯的问题
  • [Render] iOS 平台图片解析现在使用 libPNG 库,解决半透明图片显示效果发黑的问题
  • [JSB] 修复了执行 bezierTo 动作时节点的坐标未更新的问题
  • [JSB] 修复了 scheduleOnce 会重复执行的问题
  • [JSB] 修复了 cc.game.EVENT_SHOW 和 cc.game.EVENT_HIDE 在 JSB 中无效的问题
  • [Action] 修复 Web 平台下 cc.hide、cc.show、cc.toggleVisibility 无法使用的问题

组件

  • [TiledMap] 优化了 WebGL 平台的 tilemap 的实现,取消了单个 tilemap 的渲染顶点数限制,目前原生平台下 tilemap 还是会有同屏顶点数的限制
  • [TiledMap] 修复了在编辑器中移动地图资源文件会导致地图不可用的问题
  • [TiledMap] 修复了 TiledLayer 的 setTileGID 接口在 web 平台不支持非整型坐标输入的问题
  • [TiledMap] 修复原生引擎对六边形的地图渲染效果错误的问题
  • [TiledMap] 修复 TiledLayer 无法动态设置透明度的问题
  • [Button] 修复在 onTouchEnd 事件里设置其 node.active=false 后,下次再显示时其显示图片没有恢复到 normal 状态的问题
  • [Label] 修复了原生平台动态设置 TTF 字体报错的问题
  • [ScrollView] Scrollview的 content size 小于 scrollview size 时,自动隐藏 scrollbar 并重置 content 位置
  • [ScrollView] 添加 stopAutoScroll 接口,用于手动中止惯性滚动
  • [ScrollView] 修复了 Touch startPoint 位置没有经过坐标系转换导致 ScrollView 中的点击事件失灵的问题
  • [Collider] 现在可以正确监听 node.group 运行时的动态改动
  • [EditBox] 修复 Android 平台上 EditBox 启动的时候会触发 TextChanged 事件的问题
  • [EditBox] 修复原生平台上 EditBox 中的 label 的行为和对齐方式与 web 平台不同的问题
  • [EditBox] 在 Web 平台上支持更多种类的键盘类型
  • [EditBox] 修复了 iOS 上第三方输入法会挡住输入框的问题
  • [EditBox] 添加 editingReturn 事件,用以区分是点击 enter key 还是点击了屏幕
  • [Component] 修复了复制粘贴 Component 时,如果有依赖的组件,则依赖的组件会在原组件之后添加的问题
  • [Component] 对属性检查器里 add component 菜单里列出的用户组件进行字母表排序

其他

  • [Build] 构建时为丢失资源增加了详细的引用文件和路径显示,而且现在不会导致构建失败了
  • [Build] 新增消息 editor:build-start,会在构建开始时发出
  • [Build] 移除构建到原生平台时合并 JSON 的功能,避免加载逻辑出错
  • [Build] 发布到安卓平台时加入了 Android Studio 复选框,仅对 default 模板有效,需要具有 Android SDK 22 才可以正确编译。
  • [Build] 修复了 Creator 程序名称中包含空格会导致编译模板类型为“binary”模式报错的问题

3. 关注Cocos社区

你可以在这些地方找到我们:

  • 论坛技术支持:http://forum.cocos.org
  • 每周教学直播:http://www.douyu.com/726225
  • 文档和视频教程:http://www.cocos.com/docs/creator/
  • 开源仓库和大量开源示例:https://github.com/cocos-creator
  • 微信公众号:搜索公众号名称「CocosEngine」