查看原文
其他

Cocos Creator 2.4.6 更新说明

C 姐 COCOS 2022-06-10

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




重要更新


  • 优化编辑器资源加载速度,当资源第一次导入后,后续再次打开编辑器,所需时间仅为之前版本的 50% 以下,极大优化启动速度,提升开发效率

  • 优化编辑器构建时的卡顿问题,我们将引擎编译的过程移动到了 worker 中,不会阻塞主进程的执行,开发者可以在构建时,继续开发工作

  • 优化 iOS 平台序列帧动画性能,在 iPhone 6s Plus 旧机型上最多能提升三倍性能[8528]

  • 添加场景列表到预览工具栏上,可快速选择预览场景,而无需切换到对应场景,提升工作效率



Editor


  • 修复每次构建后 Zip 文件的 Hash 值不一致的问题

  • 修复拖动带有子类的节点到父类属性上无效的问题

  • 修复点击属性面板上属性选项无法定位到层级面板上的节点的问题

  • 修复灯光节点在移动时,出现 Gizmos 小方块偏移出节点外的问题

  • 修复资源管理器重命名回车以后没有进入到选中状态的问题

  • 修复 3D 粒子 Texture Animation 模块修改 numTilesXnumTilesY 没有立即生效的问题

  • 修复 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 中的 CCTexture2DCCTexture2DRGB 方法已被废弃,请改用 CCTextureCCTextureRGB

  • 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.mkapp/jni/Application.mk中,Android Instant 请放入 game/jni/Android.mkgame/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()

// 假设 testNode 是场景中的某个节点,若之前被手动移出场景了,如testNode.parent = null;// 或者testNode.removeFromParent(true);// 或者parentNode.removeChild(testNode);// 若往后 testNode 还会再次用到,则无需手动 destroy 该节点// 否则应该手动调用testNode.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 升级文档》进行调整。


点击文末【阅读原文】前往官网下载最新版本,欢迎大家使用与体验,再次感谢各位开发者的支持!



参考链接


[升级指南]

https://docs.cocos.com/creator/3.0/manual/zh/release-notes/upgrade-guide-v3.0.html


[资源管理模块升级指南]

https://docs.cocos.com/creator/manual/zh/release-notes/asset-manager-upgrade-guide.html


[资源分包升级指南]

https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html


[定制项目构建流程升级指南]

https://docs.cocos.com/creator/manual/zh/release-notes/build-extend-upgrade-guide.html


[1.10 资源升级指南]

https://docs.cocos.com/creator/manual/zh/release-notes/raw-asset-migration.html


[2.0 升级指南]

https://docs.cocos.com/creator/manual/zh/release-notes/upgrade-guide-v2.0.html


往期精彩

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存