4

我的应用顶部有这个HUD,它显示了分数(左上角)、一个关于按钮(右上角)和中间的时间线。随着时间的流逝,时间线“滚动”。

我想在时间线上画一些数字来显示它所代表的年份。我目前正在使用 GuiText 来做这件事。不幸的是,我注意到了这一点,而时间线栏位于场景中左上角的对象后面。GUIText 保留在该对象上。

GUIText 是否总是绘制在其他所有内容之上,还是有办法将其隐藏在游戏对象后面?

更新:

经过一些测试/研究后,我得出的结论是,可能只有一种方法可以让 GUIText 不出现在某些对象的前面。

如果一个人希望他们的文本(或任何类型的 GUI 内容)位于某些对象的后面,则必须使用至少一个额外的摄像头。

第二个摄像头应设置为“仅深度”,并且深度值低于主摄像头。这样,主摄像头绘制的所有内容都将位于第二个摄像头绘制的所有内容之上。

使用剔除蒙版并设置您希望在不同图层中显示/隐藏的对象。

4

2 回答 2

2

您应该能够使用着色器来做到这一点。

只需将对象的深度值从顶点着色器传递到 gui 的像素着色器。使用此值确定像素的 alpha 值。

使用您自己的游戏引擎并可以访问代码时,有很多方法可以做到这一点,但 Unity 会在这里限制您。我不确定 Unity 是否允许您将像素着色器应用于 GUI。如果没有,请考虑在 gui 的这个特定部分使用广告牌并做类似的事情。

于 2013-04-24T14:24:41.227 回答
0

经过一些测试/研究后,我得出的结论是,可能只有一种方法可以让 GUIText 不出现在某些对象的前面。

如果一个人希望他们的文本(或任何类型的 GUI 内容)位于某些对象的后面,则必须使用至少一个额外的摄像头。

第二个摄像头应设置为“仅深度”,并且深度值低于主摄像头。这样,主摄像头绘制的所有内容都将位于第二个摄像头绘制的所有内容之上。

使用剔除蒙版并设置您希望在不同图层中显示/隐藏的对象。

于 2013-04-24T13:53:01.200 回答