Cocos Creator 2.4.0 Preview 现已推出

Stella981
• 阅读 635

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 是场景中的某个节点,若之前被手动移出场景了,如
    
  • 如原先通过 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源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Spring Boot日志集成
!(https://oscimg.oschina.net/oscnet/1bde8e8d00e848be8b84e9d1d44c9e5c.jpg)SpringBoot日志框架SpringBoot支持JavaUtilLogging,Log4j2,Lockback作为日志框架,如果你使用star
Stella981 Stella981
3年前
Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?
!(https://oscimg.oschina.net/oscnet/b8c8b22b9f44bd806c26b486e1893a263a4.jpg)这是我的第56篇原创文章!(https://oscimg.oschina.net/oscnet/8bf00bc92f6a1cd46596ee44bac64a801ae.pn
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这