Cocos Creator 2.4.4 更新说明

Cocos Creator 2.4.4 正式版来了,在 3.0 preview 版本发布后,引擎组正在全力攻坚 3.0 版本,希望能够统一 2D 游戏与 3D 游戏开发流程,提供更多更强大的功能特性。除此之外,引擎组将持续对 2.x 版本进行维护与优化,这次推出的 2.4.4 版本,支持了字节跳动小游戏子包功能,优化了运行时与开发过程,修复了 2.4 以来的相关问题,欢迎 2.x 用户进行升级与体验!

What’s New

  • 支持字节跳动小游戏子包功能

字节跳动小游戏正式支持子包功能,这将为开发者提供更多的发挥空间,Creator 也在第一时间开通对子包功能的支持。

Improvement

  • 优化原生 ttf 字体渲染[#2874]
  • 首场景分包与内置资源分包默认合并所有 JSON,提升加载速度
  • 在 MissingScript 组件上显示脚本信息,便于定位出问题的脚本
  • 更新 TypeScript 版本到 4.1.3
  • 原生平台 XMLHttpRequest 支持 HEAD 请求类型[#3093]
  • 优化运行时计算材质 hash 值的消耗,感谢 大城小胖,[#7316]
  • Android 构建支持 gradle 5.x 版本[#3162]

Engine

  • [ASSET]修复构建后运行,预制体引用计数不准确的问题
  • [ASSET]修复加载资源时传入 maxRetryCount 参数无效的问题[#7689]
  • [ASSET]修复预加载图片无效的问题[#7581]
  • [ASSET]修复子包中的 Prefab 被主包复用时,运行时有可能导致组件脚本丢失的问题[#8001]
  • [PARTICLE]修复粒子系统颜色变化精度错误的问题,感谢 caogtaa,[#7532]
  • [PARTICLE]修复粒子组件替换 plist 文件时渲染贴图没刷新的问题,[#6994]
  • [TILEDMAP]修复 Tiledmap 透明度不正确的问题[#7898]
  • [TILEDMAP]修复 Tiledmap 未激活节点被渲染的问题[#7898]
  • [SPRITE]修复自动图集勾选 Allow Rotation 后 Sprite 显示错误的问题[#7501]
  • [SPRITE]修复 Sprite 使用 Mesh 模式不支持 flipX 与 flipY 的问题[#7407]
  • [LABEL]修复 Label 组件使用 BMFont 后切换 active 会出现黑块的问题[#7492]
  • [PHYSICS]修复节点下同时存在刚体节点和非刚体节点时,非刚体节点不会跟随父节点移动的问题[#7455]
  • [MASK]修复节点加入到节点树之前,增加 Mask 组件报错的问题[#7429]
  • [GRAPHICS]修复 Graphics 组件在绘制过程出现突刺的问题,[#7780]
  • [ANIMATION]修复当动画未播放时设置 sample 与 setCurrentTime 无效的问题[#7943]

Native

  • 修复原生平台绘制 Graphics 顶点达到一定数量后无法继续画图的问题[#2884]
  • 修复修改 Label 文本时,节点 size 没有变化的问题[#2834]
  • 修复 Spine 导出图集时选中 忽略空白图片 导致解析 .skel 二进制文件失败的问题[#2813]
  • 修复原生平台混合参数不生效的问题[#7839]
  • 修复原生平台 rayMesh 始终返回 infinity 的问题[#7795]
  • 修复原生平台 Sprite 使用 Mesh 模式渲染错误的问题[#362]
  • 修复原生平台 3d 节点 Mask 组件渲染异常的问题[#358]

Mini Game

  • 修复编辑器插件里的插件脚本在小游戏平台加载失败的问题
  • 修复微信平台部分机型从后台切回后,Label 消失的问题[#215]
  • 修复微信小游戏游戏过程中接电话后导致游戏卡住的问题 [#219]

Web

  • 修复 Safari 14 上性能下降的问题[#8192]
  • 修复 Web 平台密码类型输入框输入小写字母时却显示大写字母的问题[#7793]

Editor

  • 修复自动同步的预制关联根节点时的报错
  • 修复导入错误的 JSON 文件,编辑器无响应的问题
  • 修复嵌套 prefab 删除子节点后,保存失效的问题
  • 修复层级管理器上搜索 uuid 后,节点无法变化层级的问题
  • 修复命令行构建原生平台,MD5Cache 选项无效的问题
  • 修复预览时,引擎 sourcemap 错误的问题[#7609]
  • 修复编辑动画的曲线会出现无效的问题
  • 修复原生平台 SpriteFrame 的 json 文件无法合并的问题
  • 修复 Prefab 资源设置为 sync 模式时无法保存子节点的问题
  • 修复构建后的文件 hash 值发生改变的问题
  • 修复使用导出功能,材质和 FBX 没有导出依赖纹理的问题
  • 修复构建小米时,webp 文件无法打包的问题

升级提示

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():

// 假设 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 升级文档》进行调整。


2.4.4第一个bug应该是我吧:joy:

已升级 瑟瑟发抖

已升级,打包失败的bug还是会出现,内存是够的,我内存16g肯定够用。但是打包还是经常失败。

基本失败两三次才能成功一次。打包烦死了。

请问你这个问题是什么版本出现的?有其它报错吗?

没有其他报错,就是安卓构建的时候失败,然后提示这个。2.4.3和2.4.4都有的。

支持一波~~~


这个是构建的日志截图。上面传的是具体错误的调用堆栈。

是不是图片太大了,你的图集设置的宽高是多少?

求助求助,谢谢!
打包成功但是报找不到index.js文件


但是有文件

求助求助!谢谢

已解决,不好意思,因为自己的工程里面有一个叫Main的AB包,跟生成的默认main目录冲突了~ :joy:

可以解决spine动画挂点的层级问题吗?

图集最大的是2048*2048

大佬,这个bug该如何解决啊

你看一下你的sprite.spriteFrame是否赋值了undefined

感谢大佬,我把所有可能给精灵赋值spriteFrame的地方都加了个默认值,果然好了

2.4.4版本上构建web-mobile,在safari浏览器上运行,切到后台再切回来背景音乐就没了?确定已经移除了之前自定义监听cc.audioEngine.pause()/resume()的事件,其他人有遇到这个问题吗?

应该是必出