我目前正在製作XNA 2D平臺遊戲,我想知道是否可以在遊戲中繪製一種靜態GUI?在XNA中繪製GUI
我這裏的意思是,雖然遊戲更新和球員位置的變化等,該GUI將是對一種靜態層(覆蓋?)繪製,這將是遊戲正在運行的窗口的大小這樣遊戲就不需要不斷更新GUI的位置,因此可以稍微處理一些。
任何想法?
我目前正在製作XNA 2D平臺遊戲,我想知道是否可以在遊戲中繪製一種靜態GUI?在XNA中繪製GUI
我這裏的意思是,雖然遊戲更新和球員位置的變化等,該GUI將是對一種靜態層(覆蓋?)繪製,這將是遊戲正在運行的窗口的大小這樣遊戲就不需要不斷更新GUI的位置,因此可以稍微處理一些。
任何想法?
呀,你可以使用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);
當然
感謝您的時間,你可以,無論你想使用例如SpriteBatch
得出任何精靈。
你如何管理它取決於你。只要不給任何變換矩陣,事情就會繪製在你指定的座標上。
您最終會繪製您的關卡(例如,它會被某個攝像頭位置所抵消),然後在您的關卡上繪製您的GUI元素,並且不會有偏移。
只畫你的GUI,你對所有其他的紋理,但在固定位置及以上的所有其他圖紙做。 –