2013-04-24 64 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