3.0.1升级到3.1.1后,常驻节点无法显示

  • Creator 版本: 3.1.1

  • 目标平台:

  • 重现方式:

  • 首个报错:

  • 之前哪个版本是正常的: 3.0.1

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统: win10

  • 重现概率: 100%


游戏中存在一个常驻的根节点,其他Toast,Panel,Hint,跑马灯,点击特效等都是挂载在这个根节点上的,之前编辑器版本是3.0.1,一切正常,升级到3.1.1后,PersistNode无法显示,有一个问题,PersistNode我看它实现的原理是场景切换时不释放,重新挂载到新的场景下,那么,这个PersistNode是在Canvas之外的,这样没有问题吗?

大家有遇到吗,3.1.1版本中的PersistNode能否正常显示?

这个PersistNode是在Canvas之外的

如果是 2d 元素放 canvas 外面就显示不出来了

PersistNode是引擎自己来管理的,我们没有办法去修改他的所在的层级。
3.0.0及3.0.1是正常的

PersistNode是UI的一个节点,如果这样的话,有什么解决方法呢?

遗憾的是不能直接升级到新版本,没找升级的地方。

添加一个 RenderRoot2D 节点和组件,把 2d persistent 放在它的下面,把新的 RenderRoot2D 设置为 persistent

还是不行,其实之前这个PersistNode是加了Canvas组件的,改成RenderRoot2D之后,也是显示不出来,layer之类的也没有问题。运行时层级关系如下图,再帮忙看看是什么问题,多谢了:

MainScene下会有2个节点,一个是Canvas,是场景的根节点,另一个就是一个PersistNode根节点,这个节点上会挂载一个Canvas组件【或改成RenderRoot2D组件】,其下再挂载一些例如panel,hint,clickEffect之类的节点

关键是3.0.0和3.0.1都是显示正常的,升到3.1.0之后就不行了,在这几个版本的更新中也没有说明这方面有什么改动

可能是 layer 和 camera visibility 问题,检查一下是否匹配

PersistNode的layer 设定是UI_2D
camera visibility 包括了UI_2D,后面已经勾选全部了 ,也是显示不了。

能给我们一个 demo 看看么?

1赞

比较麻烦,要整理一下。

test.zip (22.8 KB)
你好,这是我这边简单的测试,升级到3.1.1还是可以正常显示的;你看看有什么需要修改的地方。

查了好久,终于找到原因了。
常驻节点本身是没有问题,跨场景是存在的并可以显示的,但是3.1与3.0在根节点的Sprite组件透明度为0时,对子节点的处理不一样,3.0版本可以显示,3.1则不显示,因为我统一控制多个根节点时,有时是半透,有些是全透,全透的根节点,导致所有的子节点全部不显示了(opacity=0)

举一个例子:
根节点Sprite,下面挂一个Button,如果Sprite的的Color为(255,255,255,0),v3.0.1版本可以显示其子节点Button,v3.1.0及后续版本无法显示其子节点Button。
如图所示:
v3.0.1版本,可以显示其下的子节点:

v3.1.0版本无法显示其下的子节点:

3.0.1 的效果其实是不对,3.1 的才是正确效果,UI 元素的透明度是可以级联的

主要是这里有个理解的问题,node的透明度级联下去比较合理,但是node上的组件一开始没有想到影响到全局了,所以这里的opacity有点乱,图片用alpha值,非图片又用UIOpacity,干扰了。

嗯,是的,确实有这个问题,我们想一想

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。