将guiText隐藏在游戏对象后面

时间:2013-04-24 10:05:23

标签: c# unity3d

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

我想在时间轴上绘制一些数字,以显示它代表的年份。我目前正在使用GuiText来做到这一点。不幸的是我注意到了,虽然时间轴栏落在场景中左上角的对象后面。 GUIText保留在此对象上。

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

更新:

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

如果有人希望他们的文本(或任何类型的GUI内容)支持某些对象,则必须使用至少一个额外的相机。

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

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

2 个答案:

答案 0 :(得分:2)

您应该可以使用着色器执行此操作。

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

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

答案 1 :(得分:0)

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

如果有人希望他们的文本(或任何类型的GUI内容)支持某些对象,则必须使用至少一个额外的相机。

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

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