UI/Canvas 出现在对象前面,即使它设置为世界 Space

UI/Canvas appears in front of objects, even though it's set to World Space

在我的 Google Cardboard 项目中,我有几个 canvases 附着在房间的墙上。这些 canvases 有玩家可以与之互动的按钮。我将每个 canvas 设置为世界 Space,但由于某种原因,按钮呈现在应该出现在按钮前面的对象前面。

更新1: UI 出现在游戏和场景 windows 的立方体后面,而不是 运行。只有当我点击播放时,图像才会出现在立方体前面。我以编程方式将图像添加到 UI 按钮,但即使我仅使用编辑器添加图像也会出现问题。

更新2: 如果我在我的场景中禁用纸板元素(即使用标准的 fps 相机设置),我不会遇到这个问题。

下图:棋盘为UI。灰色块是 3D 块。我想要 UI 在街区后面,在墙上。

手动将父对象 UI 移到灰色对象后面。

answers.unity3D 上有人提出了这个建议:

The problem may come from the shader used by the UI element with a ZTest value set to Off or the Queue tag of the UI element's shader is "higher" than the tag of the cube's shader

事实证明,这在第 3 个屏幕截图中很明显,我的 UI 按钮没有 material。一旦我提供了一个,我就使用了一个使用标准 UI 着色器的着色器(我最初尝试使用 unlit,但这使它们消失了)。

我想着色器和 google 纸板仍然存在一些问题。谢谢大家