如何在 UI Canvas 前面获取 2d sprite gameObject?

stack overflow How do I get the 2d sprite gameObject in front of the UI Canvas?
原文答案

答案:

作者头像

首先,统一的层次结构窗口在定位时完全无关紧要。

在 Unity 中,一切都是 3D,即使您切换到 2D 透视图。

因此,在您的情况下,您仍然拥有 3D 维度中的相机、精灵和画布。

要将您的精灵设置在画布前面,您只需要增加定位统计信息(在“面板 UI”屏幕截图中看到)至少比画布更靠近您的相机。

作者头像

首先确保您的 canvas' Render Mode 未设置为 Screen Space - Overlay
如果是,则将其切换为 Screen Space - Camera ,然后将其 Render Camera 属性更改为指向您的主摄像头。

然后,您可以使用以下画布的属性来控制它相对于其他精灵(出现在其顶部)的显示位置,与控制任何其他 2D Sprite 的方式相同:

  1. Sorting Layer
  2. Order in Layer

同样值得注意的是,具有相同 Sorting LayerOrder in Layer 的 2D Sprites 将使用到相机的距离来决定哪个出现在哪个上面,对于画布也是如此:

  • 如果您的画布的 Render Mode 设置为 Screen Space - Camera ,它将始终位于您的相机前面,您需要使用它的 Plane Distance 属性才能正确定位它。
  • 如果您的画布的 Render Mode 设置为 World Space ,您可以像放置任何其他精灵一样在世界中自由放置它。