2013-04-18 76 views
0

我目前正在製作XNA 2D平臺遊戲,我想知道是否可以在遊戲中繪製一種靜態GUI?在XNA中繪製GUI

我這裏的意思是,雖然遊戲更新和球員位置的變化等,該GUI將是對一種靜態層(覆蓋?)繪製,這將是遊戲正在運行的窗口的大小這樣遊戲就不需要不斷更新GUI的位置,因此可以稍微處理一些。

任何想法?

+0

只畫你的GUI,你對所有其他的紋理,但在固定位置及以上的所有其他圖紙做。 –

回答

0

呀,你可以使用spritebatch :)

//HudTexture is a transparent texture the size of the window/screen, with hud drawn onto it. 
SpriteBatch.Draw(HudTexture, Vector2.Zero, Color.White); 
//Let's say that it works well to draw your score at [100,100]. 
SpriteBatch.DrawString(HudFont, Points.ToString(), new Vector2(100,100), Color.White); 

如果你打算使更多的GUI(按鈕等),你可能想看看這個答案,我寫了一個其他後吸引他們: XNA DrawString() draws only a partial string

另外;對於繪製分數等,我經歷了相當多的拳擊/取消裝箱,因爲ToString。出於這個原因,我常常有一個字符串數組來表示分數:

String[] ScoreText = new String[100000]; //As big as your max score 

//In Initializing method: 
for (int i = 0; i < ScoreText.Length; i++) 
    ScoreText[i] = i.ToString(); 

//In draw: 
SpriteBatch.DrawString(HudFont, ScoreText[Points], new Vector2(100,100), Color.White); 
0

當然

感謝您的時間,你可以,無論你想使用例如SpriteBatch得出任何精靈。

你如何管理它取決於你。只要不給任何變換矩陣,事情就會繪製在你指定的座標上。

您最終會繪製您的關卡(例如,它會被某個攝像頭位置所抵消),然後在您的關卡上繪製您的GUI元素,並且不會有偏移。