2

我正在尝试最小化 Unity 画布中的 SetPass 调用。

考虑以下示例:

画布中的渲染是逐层进行的。渲染顺序可以如下所示:

  1. 红色方块(+1 套传球)
  2. 文本“1”和黄色方块(+2 设置传球)
  3. 文字“2”和粉红色方块(+2 设置通行证)
  4. 文本“3”(+1 设置传球)

或者,它可能会好一点:

  1. 红色方块(+1 套传球)
  2. 黄色方块,然后是文本“1”(+1 设置通行证)
  3. 粉红色方块,然后发短信“2”和“3”(+2 设置通行证)

因此,绘图正在从默认图像材料切换到文本材料并返回。此绘图的结果将产生至少4 个绘图调用,而不是 2 个。即使只使用了 2 个材质。此示例还假设未对红色、黄色和粉色方块进行批处理。

问题:有没有办法确保文本始终绘制在顶部?

笔记:

  1. TextMeshPro UI 材料(移动覆盖)在这里没有帮助。
  2. 统一 2019.3.12.f1
  3. 所有文本实际上都作为最后一层放置(例如,它们上面没有任何绘图)。
  4. 批处理有时会有所帮助。但是,复杂的 UI 可能会使用多种材质。由于我的意图是始终在所有内容上绘制文本,因此没有通用的解决方案吗?
  5. Z 顺序使绘图顺序变得更糟,并且材料之间的切换发生得更频繁。
4

0 回答 0