隐藏guiText在游戏对象后面

本文关键字:对象 游戏 guiText 隐藏 | 更新日期: 2023-09-27 18:10:44

我的应用顶部有这个HUD,显示分数(左上角),一个about按钮(右上角)和中间的时间轴。时间轴会随着时间的推移而"滚动"。

我想在时间轴上画一些数字来显示它所代表的年份。我目前使用的是GuiText。不幸的是,我注意到,虽然时间轴栏在场景中左上角的对象后面。GUIText保留在该对象之上。

GUIText是否总是绘制在其他所有内容的顶部,或者是否有一种方法将其隐藏在游戏对象后面?

更新:

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

如果你希望他们的文本(或任何类型的GUI东西)在某些对象后面,你必须至少使用一个额外的相机。

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

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

隐藏guiText在游戏对象后面

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

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

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

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

如果你希望他们的文本(或任何类型的GUI东西)在某些对象后面,你必须至少使用一个额外的相机。

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

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