2016-07-23 64 views
0

我想創建一個使用蒙版的2D UI健康欄。我有一個黑色的背景圖像,一個健康欄的完整部分的綠色健康欄圖像,以及健康欄的耗盡部分的灰色蒙版圖像。黑色背景大小約爲1 x 1,綠色和灰色部分稍小,因此黑色背景的一小部分在健康條的邊緣周圍可見。從UI蒙版奇怪的行爲

當我將健康欄添加到我的場景中時,我只能看到黑色背景。如果我關閉Mask腳本,綠色部分會顯示。最奇怪的是,如果我將綠色部分的寬度增加到50這樣的大數目,那麼整個酒吧變成綠色(除了黑色的薄邊框)。然後,如果我更改Fill Amount,酒吧會保持從0.51到1的完整度,並且從0到0.49爲空。將Fill Amount在0.49和0.51之間移動會收縮並展開條的綠色部分。

Here是健康欄的層次結構。

Here是檢查器中的狀態欄畫布。 Render ModeWorld Space。我不知道這是否與這個問題有關。我附有我自己的腳本Status Bar Canvas Script,但我註釋掉了所有的代碼。

Here是檢查器中的狀態欄背景(黑色邊框)。

Here是檢查器中的遮罩(未填充的灰色條)。

Here是檢查員的綠色欄。

This是結果的樣子。

This是結果看起來像是如果我取消選中Mask腳本。

看起來問題與Unity如何在場景中縮放我的「內容」對象有關,但我無法弄清楚它實際上在做什麼。

回答

0

遮罩架和FillAmount預製件都必須包含UI圖像組件和Sprite。 MaskHolder將具有蒙版精靈,並且Content將在其中具有健康條精靈。 MaskHolder也會有一個Mask組件,並且選擇Show Mask Graphics。您的層次結構的設置應該有如下:

enter image description here

,不應該使用畫布只是一個健康吧。

+0

你是什麼意思,我不應該使用畫布只是爲了健康吧。我不需要畫布來繪製UI元素,而不使用'OnGUI'(這似乎被推薦使用)?我對Unity很陌生,所以也許我是誤解。 –

+0

一個畫布可以根據需要將大多數UI對象作爲子項,例如按鈕,背景,文本。可以在畫布中創建空的'Rect'對象,該對象中有單個面向任務的對象作爲一個組進行處理。所以每當你需要按鈕激活按鈕保持對象。例如,當您需要將這兩個屏幕空間(如相機和疊加)放在一起時,都需要使用多畫布。您可以將大部分UI對象保留在一個畫布中。不需要僅用於健康欄的畫布。它可以是圖像或空的對象,只是將健康欄作爲用於其他建議的同一畫布的孩子 –