我正在重新開發我正在開發的遊戲,並已成功將其轉換爲使用備忘單轉換爲XNA 4.0。其中大部分有效,其中一部分不起作用,而且我正在修復不起作用的過程。從3.1轉換到4.0 ...遊戲狀態
我有一件事情是一個狀態系統,主要基於作爲XNA Unleashed(電子書)示例的狀態系統。我沒有太多內容......基本上只是停止遊戲的能力。
當我暫停遊戲時,遊戲的動作將停止,單詞「PAUSED」將出現在屏幕上的塊狀字母中,您會看到暫停的動作。但是,現在看起來精靈批處理會自動清除幀之間的所有內容,所以當我現在暫停遊戲時,屏幕會清除,並將PAUSED留在紫色背景中。那時候,我相信添加「SaveStateMode.SaveState」可以防止發生這種情況,但該功能已被刪除。當我做了一些研究時,我發現它被刪除了,因爲它本質上是無用的,這一切都是在遊戲狀態管理器中處理的。
但是,我找不到任何文檔。我應該從哪裏開始?現在,我的代碼如下所示:
在玩遊戲狀態更新方法:
if (input.WasPressed(0, Buttons.Start, Keys.Enter))
{
GameManager.PushState((GameState)ThisGame.PausedGameState.Value);
}
public void PushState(GameState newState)
{
AddState(newState);
//Let everyone know we just changed states
if (OnStateChange != null)
{
OnStateChange(this, null);
}
}
private void AddState(GameState state)
{
states.Push(state);
Game.Components.Add(state);
//Register the event for this state
OnStateChange += state.StateChanged;
}
//PausedGameState Draw method:
public override void Draw(GameTime gameTime)
{
ThisGame.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null);
DrawPaused(); //draws the Paused Text
ThisGame.SpriteBatch.End();
}
的目標是使「已暫停」出現在屏幕上,隨着遊戲中斷的地方快照...而不是在被清除的紫色屏幕上「PAUSED」。
我想也許你的問題在別處。您看到的紫色是未初始化的緩衝區的默認顏色。如果您有渲染目標問題,通常會出現這種情況。也許[這個答案](http://gamedev.stackexchange.com/a/40127/288)可能會有所幫助。 –