2011-01-16 3 views
0

私はwp7のために少しゲームをしていますが、私はスプライトバッチ内でスプライトを再描画する方法を知りました。より具体的には、ゲームが終わってハイスコア画面が描かれた場合、それらが戻るボタンまたは画面の特定の領域に当たった場合、タイトルページは再描画され、ゲームを終了することなくゲームを再開することができる。私は、タイトルページのパラメータでspritebatch.draw()をもう一度呼び出そうとしましたが、コードをスキップしてコードをスキップして、そうしないようにしています。xna/wp7ゲームのスプライトバッチでスプライトを再描画する

ありがとうございます。

+1

あなたの質問は非常に混乱しています。おそらく、あなたはいくつかのコードを投稿するべきです。この段階で私が示唆できるのは、デバッガでコードをステップ実行することです。 –

答えて

0

コードを整理するための「スクリーン」方法(ゲーム状態管理)1を使用していると仮定すると、それらをタイトル画面にリダイレクトするだけで、タイトル画面からタイトル画面が表示されます。

ゲーム状態管理を使用していない場合は、より具体的にする必要があります。それ以外の場合は、上記のリンクで説明した方法を使用するようにコードを再フォーマットすることをおすすめします。

0

私はあなたのロジックをもう少し分けて見る必要があると思います。以前の答えはこれを行う一般的な方法は、あなたのゲームの状態を管理する方法を持っていると述べたように。

すなわちSpashScreenState、InGameState、MenuState、GameOverState

IGameStateか何かを実装し、それらの状態の各々は、ちょうどあなたが任意の時点での状態の間でホップすることができますので、それらすべては、いくつかのGameStateManagerか何かの中に含ま持っており、そのアクティブ状態のみが更新されます。

あなたは透明のメニューを持っている、またはゲームは、ゲームを表示せずに、バックグラウンドで継続したいが、私はXNAのサイトはこのような状態の取り扱いに関するいくつかのチュートリアルを持っていると考えている場合、それは

...少しトリッキー得ることができます

作業それを得るための最も簡単な方法は、以下のようなものを持っていることです。

public enum GameState 
{ 
    Unknown = 0, 
    SplashScreen, 
    InGame, 
    Menu, 
    GameOver  
} 

public interface IGameState 
{ 
    void Init(); 
    void Update(GameTime elapsedTime); 
    void Render(GameTime elapsedTime); 
    void Destroy(); 
} 

はその後、すべてのあなたのゲームの状態を保存する辞書は、その後、あなたのXNA内メインセクションには、その後、現在のゲームの状態を格納する変数を持っていますすべての更新/レンダー呼び出しを辞書の関連する値にリダイレクトするだけです。

これは本当に基本的なやり方ですが、別のゲーム状態に分けて全体的なアイデアを示す必要があります。このようにして、一度に1つのゲーム状態だけを有効にすることができます。つまり、メニューに戻ってからゲームに戻った場合は、途中で再開します。

関連する問題