Cocos Creator 3.1.1 更新说明,稳定为王!

Cocos Creator 3.1.1 来了!此次更新主要修复了 v3.1 出现的稳定性问题,并优化了编辑器工作流。

欢迎所有开发者使用与体验!升级前请做好相关文件备份哦!以下是详细更新内容。

Improvement

  • 新增在资源管理器面板创建 Prefab 资源的功能
  • 新增层级管理器面板可批量设置(Alt + 点击)锁定节点的功能(锁定后在场景编辑器面板中无法被选中)
  • 当属性检查器中的属性为非 null 类型,但为 null 值时,新增创建功能

Bug Fixes

  • [EDITOR] 修复构建安卓平台时可能报错的问题

  • [EDITOR] 修复使用默认值进行命令行构建时无法成功的问题

  • [EDITOR] 修复命令行构建时一些布尔型参数转换错误的问题

  • [EDITOR] 修复构建安卓平台时 Target Api Level 修改无效的问题

  • [EDITOR] 修复压缩纹理同时选择 ETC1 RGB Separate A 格式与 PNG 格式时,PNG 格式图片生成错误的问题

  • [EDITOR] 修复添加骨骼动画事件后无法全部删除的问题

  • [EDITOR] 修复动画编辑器分量轨道的选中问题

  • [EDITOR] 修复在 Prefab 中引用嵌套 Prefab 中的节点或组件保存后会丢失的问题。

  • [EDITOR] 修复在 Prefab 实例中新添加的组件中引用 Prefab 里的节点或组件保存后会丢失的问题。

  • [EDITOR] 修复属性检查器界面记录折叠状态失效的问题

  • [EDITOR] 修复在属性检查器面板编辑节点 Layer 属性后没有弹出是否一起修改子节点的问题

  • [EDITOR] 修复属性检查器面板中数组不识别拖入资源的问题

  • [EDITOR] 修改将 SpriteFrame 资源拖到层级管理器面板创建节点时,节点的 Layer 属性不为 UI_2D 的问题

  • [EDITOR] 修复资源预览面板中对末级资源无选中记录的问题

  • [EDITOR] 修复资源管理器面板在折叠起来的文件夹内不能准确滚动定位到内部资源的问题

  • [EDITOR] 修复 Joint Texture Layout 面板无法滚动的问题

  • [ENGINE] 修复 SafeArea 组件效果不正确的问题 [8654]

  • [ENGINE] 修复小米快游戏平台音频调用 pause 之后,调用 stop 时间刻度没有重置为 0 的问题 [8636]

  • [ENGINE] 修复华为快游戏平台音频获取 currentTime 为 string 类型的问题 [8656]

  • [ENGINE] 修复连尚小游戏平台的触摸事件回调会导致在低端机上卡顿的问题 [8661]

  • [ENGINE] 修复在 iPad 浏览器上触摸事件不可用的问题 [8673]

  • [ENGINE] 修复 QQ 浏览器、微信小游戏 iOS 端、百度小游戏的重力感应无法开启或不正确的问题 [8632]

  • [ENGINE] 修复 CacheManager.clearLRU 调用报错的问题 [8663]

  • [ENGINE] 修复 SubContextView 节点因为节点 Layer 修改而不能被渲染的问题 [8677]

Known Issues

  • 微信 PC 端的键盘和鼠标适配有问题,我们将在下个版本修复这个问题,也可以手动合并此 PR 修复:[8626]

  • 在 Sprite 设置完 RenderTexture 后需要手动调用下 Sprite.updateMaterial 函数,否则可能导致在某些平台出现图像翻转的问题

  • 在场景天空盒选项上勾选 UseIBL 可能会导致 cc_environment 绑定丢失,将在下个版本修复此问题

升级说明

从 < 3.1.0 版本升级

  • 从 v3.1 开始,UITransform 组件的 priority 属性已弃用,若需要调整节点树的顺序请使用 setSiblingIndex 方法。在 v3.1 之前通过代码创建并依赖 priority 属性的节点可能会出现节点树表现和之前不一致的问题,请手动调整。

  • RenderTexture 在不同平台上会出现正反不一致的情况,为了解决这个问题,Creator 为 effect 新增了 SAMPLE_FROM_RT 宏,在使用 RenderTexture 时,需要将 SAMPLE_FROM_RT 宏设置为 true,各后端便会统一适配至正确的效果。

从 < 2.4.5 版本升级

Cocos Creator 3.x 版本已经正式发布,2.4 版本将做为 LTS(长期支持)版本,提供 后续两年 的持续更新!在 2021 年 ,v2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年 我们还将为开发者持续提供 v2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,

  • 现有的 v2.x 项目可以安心继续开发,无需强制升级至 v3.0。

  • 现有的 v2.x 项目因项目需求若想升级到 v3.x, 可以使用 Creator 提供的 2.x 资源导入工具 。此工具将支持旧项目资源完美导入,以及代码的辅助导入。代码辅助导入会把 JavaScript 转换成 TypeScript,并自动添加组件类型声明、属性声明及函数声明,组件在场景中的引用都会得到保留,并且函数内部的代码会以注释的形式导入进来,可以减轻开发者的升级难度。详细的升级说明请参考[升级指南]

  • 新项目则建议使用 v3.0 开发, 我们会不断优化 v3.0 的开发体验和运行效率,支撑好 2D、3D 等不同品类的重度游戏顺利上线。

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

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

1赞

之前3.0.1升级到3.1.0失败了, 反馈帖子(没人回复,不知道官方人员看过没):
3.0.1升级到3.1.0提示"无法从解析出模块" - Creator 3.0 - Cocos中文社区

刚又重新尝试了一下,从3.0.1升级到3.1.1,还是这个错误
诚然, 我把ts加上后就没错误了,如:
import { EventHandlerTarget } from “./src/EventHandlerTarget”;
改为
import { EventHandlerTarget } from “./src/EventHandlerTarget.ts”;

但在vscode里会报"导入路径不能以“.ts”扩展名结束。"错误
问题是assets下的ts代码却不需要加ts后缀, 所以我认为这里是一个bug, 外部代码的加载没默认带上ts后缀, 也没在升级说明中找到这方面的说明

希望官方人员能帮忙看看什么问题

1赞

等待大神采坑

所以2.4.6什么时候上?

引用 试试3.1批量选择不同位置的节点后 调整y属性 看看还会不会把xyz 都批量改成一样的了

帮群友反馈,经本人测试,确实还3.1.1确实还存在这个bug

请问win7系统可以兼容吗?3.10版本一打开就会报一堆错

好的,已回复。

2.x版本添加用户脚本的面板能不能加个搜索框呢?类似3.x一样。

稳个蛋蛋 BUG比功能多

11赞

外面那么多的日志打印的问题就都看不见的么?

3d和3.x的文档网站能不能换回2.x的,感觉不好用,搜索经常卡住,而且搜索关键字经常不出来,比如我直接搜索Node会出现一些带有Node字段的别的东西,但是没有Node

从pool中取出prefab后,因为里面包含rigid-body就会报错,之前的3.0.0版本就没有这样

升级到 3.1.1啦。反馈个Bug哈。


反馈个问题哈。在3D场景里使用精灵。并且材质的 DepthTest 是开启的情况下,可以看到如图中

  1. 右边的红色方框内的钥匙和后边的 +2 的label 的遮挡关系是正确的
  2. 左边的数字 50 和后边的红色的精灵的遮挡关系似乎反了。因为红色的精灵应该在 50 的后边

当我开启了 DepthWrite 的时候 E6662566-122C-4522-93CE-E49DE0721EAE
再来看数字 50 在前边了,但是,数字50底下的精灵的半透明部分,没有和红色的精灵的颜色做混合。
6E46785B-C3D3-4A75-8CDA-910DD3043227

这个报错是说。你把节点从节点池取出来后,有没有再次把它加到一个父节点上呢?只有加到父节点上才能正常的工作哦

同求同求同求

if (this.dictPool.hasOwnProperty(name)) {

        //已有对应的对象池

        let pool = this.dictPool[name];

        if (pool.size() > 0) {

            node = pool.get()!;

        } else {

            node = instantiate(prefab);

        }

    } else {

        //没有对应对象池,创建他!

        let pool = new NodePool();

        this.dictPool[name] = pool;

        node = instantiate(prefab);

    }

    node.setParent(parent);

    node.active = true;

我的报错是在node = instantiate(prefab);这一行发生的,还没有走到最后面的两行

奇怪了,我现在做的游戏里的一个预制件就有 刚体组件的,。但是我instantiate的时候,没有这个报错

每次说下个版本修复 然后到下一个版本问题一样在根本没有修复 然后等一个版本要几个月 项目都死了几次了 都还没有更新

1赞

这个好像不是bug,你开启alpha test以后,透明度小于某个值的直接discard,而不是col=vec4(0.)就可以的