画布未在顶部呈现

Posted

技术标签:

【中文标题】画布未在顶部呈现【英文标题】:Canvas is not rendering on top 【发布时间】:2016-06-08 13:42:40 【问题描述】:

我使用画布和 Unity UI 元素作为 HUD。我希望 HUD 出现在所有事物的前面,但事实并非如此。

【问题讨论】:

【参考方案1】:

以前没有使用过 Cardboard,但我相信您可以通过相机剔除来解决这个问题。只需按照以下步骤操作:

画布

1.选择Canvas并将图层更改为UI。默认为 UI,但请确保它仍设置为 UI。

默认/主摄像头

1.选择已经存在的主摄像头并将Clear Flags更改为Skybox

2.将Culling Mask更改为Everything。点击Everything,这是Culling Maskde-select/uncheckUI的设置。

3.将Depth更改为0

新相机

1.新建一个Camera,命名为UI Camera。

2.选择UI相机,将Clear Flags改为Depth Only

3.将Culling Mask改为UI

4.将Depth更改为1

5.如果要在顶部显示的 Canvas 将“Render Mode”设置为“World Space”或“Screen Space - Camera”,则将 UI 相机拖到 Canvas 的渲染相机/事件相机插槽。如果“Render Mode”设置为“Screen Space - Overlay”,则不必这样做。

就是这样。这将始终在前面显示 UI。它应该是默认的,但由于某种原因它不适合你。

【讨论】:

这些步骤破坏了 VR 中的一切,所以我基本上不得不放弃那个分支并重新开始。不过,这是很好的信息和很好的答案;在 VR 中要小心! 我又试了一次,它并没有“破坏一切”,但在 VR 中却很奇怪。当我带着 HMD 环顾四周时,我的画布会四处移动,所以如果我向下看,我的画布会向上移动,如果我向上看,我的画布会向下移动,如果我向左看,我的画布会向右移动,等等。但我实际上无法指向用我的激光笔画在画布上。我的激光笔认为它位于主摄像头的位置。如果我说得有道理,我想知道......希望你能提供帮助!【参考方案2】:

感谢@Programmer 我理解了一般逻辑,但如果你正在研究虚拟现实,你必须做更多的事情。

1-) 复制虚拟现实相机并应用更改@Programmer

【讨论】:

实际上你只需要确保新相机是主相机的子相机或者复制它的变换 @derHugo 具有讽刺意味的是,让新相机成为 Oculus 主相机的子相机是我问题的原因。

以上是关于画布未在顶部呈现的主要内容,如果未能解决你的问题,请参考以下文章

单击链接时缓慢加载 Facebook 画布应用程序(如果目标顶部)

WPF:画布鼠标事件未在空白处触发

Android 模拟器未在 webview 中显示 html5 画布

使用cordova 和 pixi.js 无法在 iPhone 上呈现画布

如何在将鼠标放在图形元素顶部的画布上添加 JPanel?

Android:如何将按钮放置在画布顶部的 x,y 位置