Cocos Creator 2.4.6 今日发布。本次更新修复了一些已知问题。Cocos Creator 将持续优化性能,为开发者带来更好的使用体验!以下是详细更新内容。

重要更新
- 优化编辑器资源加载速度,当资源第一次导入后,后续再次打开编辑器,所需时间仅为之前版本的 50% 以下,极大优化启动速度,提升开发效率
- 优化编辑器构建时的卡顿问题,我们将引擎编译的过程移动到了 worker 中,不会阻塞主进程的执行,开发者可以在构建时,继续开发工作
- 优化 iOS 平台序列帧动画性能,在 iPhone 6s Plus 旧机型上最多能提升三倍性能[#8528]
- 添加场景列表到预览工具栏上,可快速选择预览场景,而无需切换到对应场景,提升工作效率

Editor
- 修复每次构建后 Zip 文件的 Hash 值不一致的问题
- 修复拖动带有子类的节点到父类属性上无效的问题
- 修复点击属性面板上属性选项无法定位到层级面板上的节点的问题
- 修复灯光节点在移动时,出现 Gizmos 小方块偏移出节点外的问题
- 修复资源管理器重命名回车以后没有进入到选中状态的问题
- 修复 3D 粒子 Texture Animation 模块修改 numTilesX 和 numTilesY 没有立即生效的问题。
- 修复 3D 粒子 Rotation 模块无法设置 separateAxes, 修改 XY 旋转无效的问题。
- 修复 3D 粒子 Size 模块使用曲线时修改没有立即生效的问题。
- 新增 VideoClip 类型,视频资源导入后自动识别为 VideoClip 格式
- 修复压缩纹理出现噪点的问题,感谢 大城小胖
- 修复内置 Unlit 材质 depthWrite 值不对的问题
- 修复富文本组件导致打开场景数据发生变化的问题[#8903]
Engine
- 修复材质的 hash 值因为 uniform 的顺序导致计算不正确的问题[#8823]
- 修复 sp.Skeleton.clearTrack 没有重置初始姿势的问题[#8801]
- 修复 cc.Color.fromHex 计算错误的问题[#8762]
- 新增 Node.setSelfGroupIndex 接口用于设置自身分组[#8614],感谢大城小胖
- 修复 Mark 组件使用精灵后勾选延迟加载后错误的问题[#8264]
- 修复事件回调中触发其他事件导致事件丢失的问题[#8276]
- 修复多次打开软键盘无法将游戏内容上推的问题[#8374]
- 修复触摸节点,紧接着隐藏节点,释放触点后导致触摸事件全部失效的问题[#8969]
- 新增 Animation.hasAnimationState API 判断是否存在某个 AnimationState,感谢大城小胖
Mini Game
- 修复 cc.assetManager.cacheManager.clearLRU 调用报错的问题[#234]
Breaking Change
- cc.sys.isNative 在快游戏平台改为 false
升级提示
Cocos Creator 3.0 版本已经正式发布, 2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,
- 现有的 2.x 项目可以安心继续开发,无需强制升级 3.0。
- 现有的 2.x 项目因项目需求如想升级到 3.x,可以使用 Creator 提供的 2.x 资源导入工具。此工具将支持旧项目资源完美导入,以及代码的辅助导入。代码辅助导入会把 js 转换成 ts,添加组件类型声明、属性声明及函数声明,组件在场景中的引用都会得到保留,并且函数内部的代码会以注释的形式导入进来,可以减轻开发者的升级难度。详细的升级说明请参考 升级指南。
- 新项目则建议使用 3.0 版本开发,我们会不断优化 3.0 的开发体验和运行效率,支撑好 2D、3D 等不同品类的重度游戏顺利上线。
Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。以下是升级说明,如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。
从 < 2.4.0 版本升级
- cc.loader 已经不建议使用,请使用最新的 cc.assetManager 来代替,请参考 资源管理模块升级指南
- 子包功能已升级为 Asset Bundle,请参考 资源分包升级指南
- 调整了项目构建后的目录结构,调整了 BuildResults 的 API,如果你使用了编辑器插件获取编辑器构建结果,请参考 定制项目构建流程升级指南
- 从 1.10 开始废弃的 cc.RawAsset 已被正式移除,请使用 cc.Asset 代替。由于 2.4 不再兼容原有 1.x 项目中对 RawAsset 类型的历史遗留用法,建议所有要升级到 2.4 的项目特别是从 1.9 版本一路升级上来的项目,先在任意的 1.10 ~ 2.3 版本中对编辑器编译代码时输出的所有警告或报错都正确处理完毕,再升级到 2.4。
- cc.Color.fromHex 已被废弃,请使用 cc.Color.fromHEX 接口
从 < 2.3.3 版本升级
- Effect 中的 CCTexture2D,CCTexture2DRGB 方法已被废弃,请改用 CCTexture,CCTextureRGB
- Vec3.FRONT 已被废弃,请改用 Vec3.FORWARD
从 < 2.3.0 版本升级
从 2.3.0 开始,定制安卓原生工程时,需注意 Android 与 Android Instant 使用了同一个构建模板
- 如果是 Android 平台单独使用的代码请放入 app/src 目录, 单独使用的第三方库请放入 app/libs 目录。
- 如果是 Android Instant 单独使用的代码和第三方库请分别放入 game/src, game/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.x 项目升级无此问题)
从 < 2.2.0 版本升级
从 2.2.0 开始,我们强化了内存管理机制,现在要求用户通过代码动态创建且独立于场景节点树的 cc.Node 必须通过 destroy() 释放,否则引擎无法知道何时回收这类节点的内存,会导致内存泄露。
- 如原先手动从场景中移除的节点,在不需要用到的时候也需要统一 destroy():

- 如原先通过 cc.removeSelf 这个 action 销毁节点,请改为使用 cc.destroySelf。
- 如原先通过 cc.NodePool 管理节点,则不受影响。
从 2.2.0 开始,我们不再建议你使用节点的 Skew 功能。
Skew 通常用作在 2D 引擎中模拟 3D 效果,随着 Cocos Creator 对 3D 节点的深入支持,Skew 效果已经完全可以由 3D 节点来实现。所以为了统一使用体验,进一步优化引擎底层实现,我们废弃了 Skew 属性。不过我们依旧会保留一段时间内的向下兼容,开发者可在旧项目中延续原有做法。后续我们将进一步完善兼容方式和升级案例,择机正式移除 Skew 功能。
从 < 2.0 版本升级
打开 1.x 项目的话,场景等所有资源将会自动升级,代码中的废弃接口从 2.3.3 开始将会在保持兼容的基础上同步输出报错。升级方式可参考《1.10 资源升级指南》和《2.0 升级文档》进行调整。
前往官网下载最新版本,欢迎大家使用与体验,再次感谢各位开发者的支持!更多内容欢迎关注 Cocos 官方微信公众号。
