unity3d 为什么Unity Canvas Image总是渲染在我的gameObjects上,即使它肯定在它们后面?

b5lpy0ml  于 2023-01-02  发布在  其他
关注(0)|答案(7)|浏览(296)

在我的2d Unity项目中,我有一个画布,其中包含我想要用作背景的图像。
我在这个背景前面有2个gameobject。但是无论我在pos z,排序层,或者层次排序上做多少摆弄,图像总是在对象的前面。
上面的gif显示了在3d模式下,即使图像明显在这些物体的后面,但如果它们重叠,图像总是会出现在它们的上面。
层级:

任何能把我从这种疯狂中拯救出来的建议都非常感谢。

jchrr9hc

jchrr9hc1#

将精灵渲染器的变换z值设置为0而不是100
如果这不能解决问题,请指定相机属性,这样我就可以尝试重新创建精确的设置。

nwo49xxi

nwo49xxi2#

尝试点击Layers -> edit layers,在排序层内,您可以更改订单抓取层,上面的一切都出现在相机后面。

jq6vz3qz

jq6vz3qz3#

你可以创建一个叫做Object的图层,将其分配给游戏对象。创建一个对象摄像机剔除蒙版-〉对象图层深度大于你当前的主摄像机。设置为Projection -〉Orthographic Clear flags -〉solid colors。canvas Render Mode -〉Screen Space - Camera并将渲染摄像机分配为对象摄像机

m0rkklqb

m0rkklqb4#

1.对象或背景的“检查器”选项卡。
1.精灵渲染器。
1.其他设置。
1.排序层。
1.将其更改为其他图层。

envsm3lx

envsm3lx5#

遇到了同样的问题,并通过以下步骤解决了该问题:
1.在画布设置中,将“屏幕空间覆盖”更改为“屏幕空间摄影机”
1.将camera变量设置为用于场景的变量。

a2mppw5e

a2mppw5e6#

我找到了一个解决方法。我基本上在UI生成器中创建了一个VisualElement,并设置了一个渲染纹理到背景。然后我添加了一个额外的摄像头到我的项目中,以查看所有需要在顶部的sprite。该摄像头提供渲染纹理,所以现在摄像头看到的所有内容都被强制放在UI文档的顶部,作为VisualElement的背景。如果你想控制整个屏幕,我只需要将VisualElement的位置设置为绝对值并最大化它的尺寸。如果你的游戏没有固定的长宽比,它可能会导致一些拉伸,但除此之外,我真的不能告诉区别。排序层的UI文档被打破,统一需要工作。这是我找到的最好的选择。希望这能有所帮助。

kkih6yb8

kkih6yb87#

我也遇到了同样的问题,我通过将相机附加到画布(屏幕空间)上,最后将对象的排序层更改为-1来修复它。

相关问题