Cocos Creator 2.3.1 更新说明

2020.3.6 产品动态 by COCOS

Hi,各位开发者,很高兴跟大家见面。在我们发布了 Cocos Creator 2.3.0 之后,得到了许多积极的反馈和建议,感谢大家的支持!

此次更新的 2.3.1 版本旨在修复缺陷和提升产品稳定性,建议所有的 2.3 开发者升级。以下是 2.3.1 完整更新说明。

2.3.1 更新说明

Improvements

  • 适配微信 PC 版小游戏 #87, 使用方法详见文档 
  • 进一步优化小游戏与 Web 平台上的引擎包体大小
  • 完善 API 文档与 creator.d.ts 声明
  • 增加 TiledMap Object 图层 Top-Down 和 Manual 渲染顺序的支持( 感谢@大城小胖) #6157
  • 增加 TiledMap Object 图层水平和垂直翻转的支持 #6157
  • 支持使用 Backspace 按键删除场景中的节点
  • 锁定内置资源,避免误操作
  • 禁用原生非 JS 线程中的 evalString 调用,避免 V8 崩溃

Editor

  • 修复升级到 2.3 后无法使用 npm 模块的问题
  • 修复升级到 2.3 后 VS Code 无法断点的问题
  • 修复升级到 2.3 后可能导致脚本循环依赖,出现 “TypeError: Object prototype may only be an Object or null” 报错的问题
  • 修复在 Windows 平台仅构建脚本时,插件路径可能错误的问题(感谢 shengyong)
  • 修复部分模型导入后节点显示不全的问题(感谢 C_Tsang)
  • 修复 Spine 二进制文件在微信小游戏上无法上传的问题
  • 修复构建时小米生成到默认路径的签名证书会被删除的问题

Engine

  • [Core] 优化动态创建 Label 节点时的初始化过程 #6173
  • [Core] 修复动态修改 Prefab 中的材质将导致其它相同材质也被改变的问题 #6201
  • [Core] 修复高频次重复设置 zIndex 可能导致的渲染层级问题(感谢@大城小胖) #6227
  • [Core] 修复 Canvas 组件勾选 fitWidth 后 EditBox 输入框错位的问题 #6233
  • [Core] 修复 RichText 在 active 为 false 的状态下修改内容,排版错误的问题 #6231
  • [Core] 修复 3D 粒子第一次 Burst 的显示数量不正确的问题 #6269
  • [原生] 修复在事件回调中销毁 Mask 导致的报错 #6186
  • [原生] 修复材质切换 Technique 无效的问题(感谢 inkfood) #250
  • [原生] 修复窗口大小改变后获取到的宽高不正确的问题 #249
  • [原生] 修复窗口大小改变后 Widget 未更新的问题 #6224
  • [原生] 修复 JS 原生调试无法使用 Performance 和 Profiler 的问题 #2186
  • [原生] 修复 Editbox 点击软键盘收起三角,没有触发编辑完成事件的问题
  • [原生] 修复游戏 restart 时的内存泄漏问题 #2215
  • [原生] 修复 Android 音频模块在进入后台后会阻止设备进入省电模式的问题 #2137
  • [原生] 修复 Android 分屏时的窗口自适应问题 #2142
  • [原生] 修复 Windows 平台 restart 之后窗口大小错误的问题 #2129
  • [HTML] 修复 safari 从后台回到游戏时音频不能播放的问题 #6198
  • [小游戏] 修复 Audio 没有被 destroy 的问题 #6221

KNOWN ISSUES

  • 目前在 v2.3.1 中导入 Cocos Studio 项目时会出现报错,此问题将在 v2.3.2 版本修复。开发者如有需要的话可以临时先在旧版本编辑器中导入项目,然后再升级到 2.3.1 版本进行使用。

升级提示

Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。以下是升级说明,如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。

从 < 2.3.0 版本升级

如果预览时出现加载警告“Can not find module.module for path…”

这个警告可能是因为升级到 2.3 后,对脚本 import/require 的路径大小写检测变严格了。在旧版本中,如果路径的大小写和实际文件不符,可能会有潜在的一些错误隐患,但不一定会表现出来。我们建议遇到这个问题的项目对相应大小写进行修正。

从 2.3.0 开始,定制安卓原生工程时,需注意 Android 与 Android Instant 使用了同一个构建模板

  • 如果是 Android 平台单独使用的代码请放入 app/src 目录, 单独使用的第三方库请放入 app/libs 目录。
  • 如果是 Android Instant 单独使用的代码和第三方库请分别放入 game/srcgame/libs 目录。
  • 如果是 Android 和 Android Instant 共用的代码和第三方库,请分别放入 proj.android-studio 根目录底下的 src 目录和 libs 目录。
  • proj.android-studio 根目录底下 jni/CocosAndroid.mk , jni/ CocosApplication.mk,主要用于配置引擎相关的配置,开发者的配置,建议 Android 放到 app/jni/Android.mk 和 app/jni/Application.mk中,Android Instant 请放入 game/jni/Android.mk 和 game/jni/Application.mk 中。

此外,在 Cocos Creator 编译 Android 时会默认执行 assembleRelease/Debug,编译 Android Instant 时会执行 instant:assembleRelease/Debug

如自定义了音频前后台切换时的暂停逻辑,升级到 2.3.0 后请移除

目前 Creator 游戏在所有平台上前后台互相切换时,都会在内部自动暂停和恢复音频。 如果开发者之前有对这一块进行过定制,监听并执行了 cc.audioEngine.pause()/resume() 之类的音频操作,可能会和引擎默认行为冲突。如果有遇到相关的音频问题,只需移除相应的定制代码即可。

从 2.0 – 2.3.0 版本升级

从 2.3.0 开始,Canvas 组件不再负责将 Canvas 节点尺寸设为屏幕大小,此行为将结合 Widget 组件实现。为保证兼容性,2.0 项目升级后,Canvas 所在节点会自动添加 Widget 组件。(从 1.0 项目升级无此问题)

从 < 2.2.0 版本升级

从 2.2.0 开始,我们强化了内存管理机制,现在要求用户通过代码动态创建且独立于场景节点树的 cc.Node 必须通过 destroy() 释放,否则引擎无法知道何时回收这类节点的内存,会导致内存泄露。

  • 如原先手动从场景中移除的节点,在不需要用到的时候也需要统一 destroy()
    // 假设 testNode 是场景中的某个节点,若之前被手动移出场景了,如
    testNode.parent = null;
    // 或者
    testNode.removeFromParent(true);
    // 或者
    parentNode.removeChild(testNode);
    // 若往后 testNode 还会再次用到,则无需手动 destroy 该节点
    // 否则应该手动调用
    testNode.destroy();
  • 如原先通过 cc.NodePool 管理节点,则不受影响。

从 < 2.0 版本升级

打开 1.x 项目的话,场景等所有资源将会自动升级,代码如有警告或报错,可参考《1.10.0 资源升级指南》《2.0.0 升级文档》进行调整。

总结

以上就是此次更新的详细内容。从 v2.0 用 3D 渲染器重写、v2.1 开放 3D 能力至今,Cocos Creator 缺失的 3D 能力已经在迭代中逐步补齐。我们希望能够帮助中小团队开发出惊艳的 3D 休闲项目,并且保留 Creator 做为 2D 引擎轻量高效的优势,这是现阶段 Cocos Creator 和 Cocos Creator 3D 的主要区别。与此同时,与 3D 引擎更多模块的统一,也是 2D 和 3D 两个产品线完全融合的开始。在不久的将来,Cocos Creator 将会整合两个引擎的优点,提供卓越的 2D/3D 游戏开发体验。

我们欢迎大家继续反馈,以便更好地为你们服务。