2013-04-24 41 views
3

我有我的应用程序的顶部显示得分(左上角),约按钮(右上角)和中间的时间线上的平视显示器。时间轴会随着时间的推移而“滚动”。隐藏guiText背后的游戏对象

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

GUIText总是被绘制在其他任何东西之上,或者有办法将它隐藏在游戏对象后面吗?

更新:

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

如果希望自己的文本(或者任何类型的GUI东西)落在特定对象后面,则必须至少使用一个额外的相机。

第二台摄像机应设置为“仅限深度”并且其深度值低于主摄像机。这样,主摄像头绘制的所有内容都将显示在第二台摄像头绘制的所有内容上。

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

+1

至少,您不能在其他gameObjects下渲染guiText,而不是不使用其他摄像头。如果您希望GUI成为您场景的三维元素,那么您必须查看诸如NGUI之类的其他GUI解决方案。 – 2013-04-24 12:03:36

+0

我认为问题在于你绘制物品的顺序。时间线上的文本是通过按钮绘制的?这是因为文本是在按钮之后呈现的。尝试将该代码放在按钮之前。 – LightStriker 2013-04-24 13:12:36

+0

我认为这个问题与文本是GUI和按钮/图标一个gameobject(立方体)有关。我相信GUI的东西总是最后绘制的。它是否正确? – kUr4m4 2013-04-24 13:17:00

回答

2

你应该可以使用着色器来做到这一点。

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

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

+0

这是一个非常优雅的解决方案,没有想到它。你能否对我们这些对shaders不熟悉的人进行更详细的描述? – 2013-04-25 08:00:30

0

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

如果希望自己的文本(或者任何类型的GUI东西)落在特定对象后面,则必须至少使用一个额外的相机。

第二台摄像机应设置为“仅限深度”并且其深度值低于主摄像机。这样,主摄像头绘制的所有内容都将显示在第二台摄像头绘制的所有内容上。

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

+0

你应该编辑/更新你原来的帖子,而不是在这里写你的答案。 – David 2013-04-24 14:16:23

+1

出于好奇,为什么不使用3D文本?如果你想模仿guitext,使它成为你的相机对象的孩子,使文本始终保持在视图中。我认为这会比创建第二台摄像机便宜。另外还有一个[社区着色器](http://wiki.unity3d.com/index.php?title=3DText)用于增加文本的深度。 – Jerdak 2013-04-27 16:05:22

+0

我只是忘了3D文字:)而且我甚至知道shader -_-也有很好的解决方案! – kUr4m4 2013-05-06 07:24:10