从 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 是场景中的某个节点,若之前被手动移出场景了,如
如原先通过 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 升级文档]**进行调整。
本文分享自微信公众号 - Creator星球游戏开发社区(creator-star)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。