Cocos Creator 2.4.0 Preview 现已推出

从 2.4.0 进行公测以来,我们收集到许多开发者的意见和建议,这些反馈给予了我们方向,让我们不断地完善和改进。在此,感谢所有参加测试的开发者们。今天,我们汇集了所有的改进,提前放出较为稳定的预览版本

这个版本包含了许多新的功能与更新,如资源管理系统重构、正式支持了社区里呼声很高的 Asset Bundle、并优化了原生上 Label 渲染的性能、优化 Graphic 渲染效果等等。

为了确保此版本能更好地服务于大家的项目,我们强烈建议所有计划升级到 2.4 的项目在备份好原有工程后升级试用。只需要在 Cocos Dashboard 中添加新编辑器,就可以找到 Cocos Creator 2.4.0-preview。如果在升级过程中遇到任何问题,可戳文末“阅读原文”,前往论坛文档向我们反馈喔。

以下是 Cocos Creator v2.4.0 Preview 完整更新说明。为保证阅读体验,部分[参考链接]统一放在文末,更多详细信息请查看论坛文档。

 What's new

  • 增加 cc.AssetManager 模块用于管理资源,包括资源的加载、预加载、自动释放等。文档请参考 [Asset Manager] 和 [动态加载]

  • 正式支持 Asset Bundle,提供了更强大的远程资源加载能力、子项目动态加载能力,并进一步减小了首包的大小。文档请参考 [Asset Bundle] 和 [加载 Asset Bundle]

  • 小游戏平台支持首场景分包功能

  • 增加 CCSafeArea 组件 [#6182]

  • 支持直接导入 gltf 数据

  • 增加 Label 的混合选项 [#6632]

 Improvements

  • 升级 TypeScript 的版本到 3.9.2

  • 原生平台上使用 FreeType 优化 Label 渲染性能 [#2125]

  • 编辑器属性面板支持拖拽数组赋值

  • 完善 Graphic 的抗锯齿效果 [#6474]

  • 增加构建压缩纹理缓存功能

  • 支持预览时进行模块剔除

  • 支持设置预览端口

  • 优化 2D 粒子系统 free 和 relative 模式的性能 [#6236]

  • 优化 ToggleContainer 获取 toggleItems 效率 [#6569]

  • 完善原生热更新支持 [#2312]

  • 原生桌面平台构建时可设置窗口大小

  • 提升 WebSocket 带宽 [#2353]

  • SpriteFrame 增加 None Trim 类型,快速设置无裁剪

  • 支持导入 Creator 3D 生成的材质文件

  • 支持其他小游戏平台的压缩纹理

  • 升级 v8 版本到 8.0.426.16 [#2224]

  • 完善 jsb 的代码提示 [#290]

Engine

  • 修复 cc.easeBackOut 在 time 为 0 时返回值不正确的问题,[#6728],感谢 @chen-gaoyuan

  • 修复 number 模式下,EditBox.maxLength 属性不生效的问题 [#6725]

  • 修复 Node.walk 遍历错误的问题 [#6710]

  • 修复调用 cc.dynamicAtlasManager.showDebug 报错的问题 [#6697]

  • 修复贴图设置为预乘后,DragonBone 与 Spine 渲染错误的问题 [#6696],感谢 @大城小胖

  • 修复 onLoad 中设置节点的 size 无效的问题 [#6688]

  • 修复 effect 中 cc_matProj 错误的问题 [#6653]

  • 修复 EditBox 在 ScrollView 里滚动视图时,没办法更新位置的问题 [#6634]

  • 修复按钮禁用状态下的材质会将材质重置回默认材质的问题 [#6562]

  • 修复 DragonBone 在销毁场景时一直报错的问题 [#6553]

  • 修复渲染单个 Camera 阴影错位的问题 [#6477]

  • 修复 BMFont 配置数据不存在时的报错 [#6472]

  • 修复开启预乘后,透明度无效的问题 [#6451]

  • 修复 Camera.render() 渲染两次的问题,[#6355],感谢 @大城小胖

  • 修复 2d 粒子系统 relative 模式,节点旋转时,粒子跟随的问题 [#6236]

  • 修复 Tiled Map 渲染顺序可能错误的问题 [#6284]

  • 修复 Tiled Map 隐藏的图像还是会渲染的问题 [#6309]

  • 修复 Android 9,Android 10 版本号检测失败的问题 [#6466]

  • 修复 Spine 纹理使用压缩纹理后渲染错误的问题 [#6483]

  • 修复 Spine 贴图可能渲染错误的问题 [#6584]

  • 修复调用 Texture2D.setPremultiplyAlpha 之后图片翻转的问题 [#6602]

 Native

  • 修复屏幕翻转后,节点缩放不正确的问题 [#6689]

  • 修复安卓原生 JniHelper 不是线程安全的问题 [#2457]

  • 修复 unzip 不是线程安全的问题 [#2131],感谢 @benloong

  • 修复安卓 EditBox 的完成按钮被虚拟导航栏遮挡的问题 [#2426]

  • 修复 Spine 节点在 iOS 上无法获取节点大小的问题 [#273]

  • 修复原生 Effect 中 cc_time 错误的问题 [#6586]

  • 修复 iOS 音频播放可能崩溃的问题 [#2358]

  • 修复节点旋转计算错误的问题 [#2361]

  • 修复设置 Label.string 时编码错误导致崩溃的问题 [#2395]

  • 修复游戏退出时出现报错 [#2406]

  • 修复屏幕旋转后,输入框会将视图上推的问题 [#2415]

  • 修复 Spine 3.6.53 版本导出的 JSON 文件里的路径动画解析失败的问题 [#2413],感谢 @laomoi

  • 修复 Android 上重力感应错误的问题 [#2231]

  • 修复 Tiled Map 当节点挪动到没有地块信息的位置时,不会被渲染的问题 [#2283]

  • 修复原生 WebSocket 接口与 Web 不一致的问题 [#2297]

  • 修复调用 Camera 的 render 方法,会导致 Spine 加速播放的问题 [#258]

 Web

  • 修复 iOS Web-Mobile 摘下耳机后音频无法播放的问题 [#6730]

  • 修复 WebView 透明度在 iOS 上错误的问题 [#6717]

  • 修复 iOS 浏览器上,输入中文后,无法再输入英文的问题 [#6631]

 Mini Game

  • 修复微信小游戏 WebSocket 发送 Uint8Array 数据报错的问题 [#115]

  • 修复音频意外中断时无法自动恢复播放的问题 [#118]

  • 修复 PC 微信数据开放域无法运行的问题

 Editor

  • 修复 Sprite Editor 保存和还原状态不对的问题

  • 修复在动画编辑状态下,无法重命名不在编辑的动画剪辑的问题

  • 修复增加 Spine 资源后,编辑器无法识别出来的问题

  • 修复用户插件重启后,编辑器可能无法打开的问题

  • 修复多次调用 getNativeAssetPaths 返回值错误的问题

  • 修复脚本重命名后加载脚本失败的问题

  • 修复点击图集会出现 width 和 height 报错的问题

  • 修复使用自动图集图片可能失真的问题

  • 修复导入某些图片导致资源面板错误的问题

  • 修复 Prefab 编辑模式无法通过 delete 键删除节点的问题

  • 修复勾选 Filter Unused Resources 在图集没有被导出时无效的问题

  • 修复 effect 中定义宏的取值范围无效的问题 [#6616]

  • 修复动画编辑器设置 CircleCollider.offset 属性异常的问题 [#6600]

  • 修复还原上次保存无效的问题

  • 修复设置预览浏览器无效的问题

 Known Issues

  • 暂不支持多开编辑器

 升级提示

Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级。但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。

此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。以下是升级说明,如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。

从 < 2.4.0 版本升级

  • cc.RawAsset 的支持已被移除,请使用 cc.Asset 代替

  • cc.loader 已经不建议使用,请使用最新的 cc.assetManager 来代替,请参考 [资源管理模块升级指南]

  • 子包功能已升级为 Asset Bundle,请参考 [资源分包升级指南]

  • 如果你使用了编辑器插件获取编辑器构建结果,请参考 [定制项目构建流程升级指南]

从 < 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 时会执行 in stant: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 升级文档]进行调整。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值