c# – 将guiText隐藏在游戏对象后面

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

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

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

更新:

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

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

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

使用剔除蒙版并设置要在不同图层中显示/隐藏的对象.

最佳答案 您应该可以使用着色器执行此操作.

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

使用自己的游戏引擎时可以通过多种方式完成此操作,并且可以访问代码,但Unity会在此处限制您.我不确定Unity是否允许您将像素着色器应用于GUI.如果没有,请考虑在gui的这个特定部分使用广告牌并做类似的事情.

点赞