首页 > 解决方案 > Unity3D中UIs渲染顺序的一些问题

问题描述

发现了一些超出我理解的东西。

两个图像,其中一个文本重叠。
两个图像,其中一个文本重叠。

他们是如何订购的。
他们是如何订购的。

3批!
3批!

这让我很困惑。正如我读过的一些官方文章,“Unity UI 是从后到前构建的,对象在层次结构中的顺序决定了它们的排序顺序。层次结构中较早的对象被认为在层次结构中较晚的对象后面。批处理由从上到下遍历层次结构,收集所有使用相同材质、相同纹理且没有中间层的对象。”

在我的理解中,文本应该在两个图像之前渲染,并且批次应该是 2 而不是 3。那么这里到底发生了什么?

标签: unity3d

解决方案


因为文本首先呈现,所以当正方形呈现时,它会越过已经绘制的像素。

“对于批处理,批处理意味着它采用所有相同的元素,具有相同的纹理和材料,并尽可能将它们放入 1 个绘图调用中。另一方面,文本总是在不同的图集中。因此,如果您有一个 Image 后跟 Text ,那么您将有 2 个绘图调用,因为它们不能被批处理在一起。” -参考这里

您可能还需要在播放器设置中启用静态或动态批处理,如果它们是静态的,请尝试在检查器中将它们标记为静态批处理。关于为什么批处理可能不起作用的更多原因,我会参考上面的链接,因为似乎有很多原因!

编辑:您使用的是默认的 Unity 文本还是 Text Mesh Pro?它很可能在渲染顺序和批次方面工作相同,但如果你不使用 TMP,你应该使用它,因为它更有效,渲染更好,并且通常具有更多功能。Unity 购买该产品以适应其基础引擎是有充分理由的。


推荐阅读