2011-01-16 4 views
0

Ich mache ein kleines Spiel für wp7 und ich fragte mich, wie man ein Sprite in einem Sprite-Batch neu zeichnen. Genauer gesagt, nachdem das Spiel vorbei ist und der Highscore-Bildschirm gezeichnet wird, wenn sie den Zurück-Button oder in einem bestimmten Bereich des Bildschirms drücken, wird die Titelseite neu gezeichnet und sie könnten das Spiel erneut spielen, ohne das Spiel zu verlassen. Ich versuchte, spritebatch.draw() erneut aufzurufen, wobei die Parameter für die Titelseite waren, aber es übersprang einfach den Code, als ob er es getan hätte, und das tut es nicht.Sprites in einem Spritebatch in XNA/WP7 Spiel umwandeln

Vielen Dank.

+1

Ihre Frage ist sehr verwirrend. Vielleicht solltest du etwas Code posten. In diesem Stadium kann ich nur vorschlagen, dass Sie mit dem Debugger durch Ihren Code gehen. –

Antwort

0

Angenommen, Sie verwenden die "Screen" -Methode für die Organisation Ihres Codes (z. B. [Game State Management]) 1, leiten Sie sie einfach zum Titelbildschirm und der Titelbildschirm wird es von dort nehmen.

Wenn Sie nicht die Verwaltung des Spielstatus verwenden, müssen Sie genauer sein. Anderenfalls würde ich vorschlagen, Ihren Code neu zu formatieren, um die im obigen Link beschriebene Methode zu verwenden.

0

Ich denke, dass Sie Ihre Logik ein bisschen mehr trennen müssen. Wie in der vorherigen Antwort erwähnt, ist es eine übliche Art, dies zu tun, um eine Möglichkeit zu haben, Ihre Spielzustände zu verwalten.

Ie SpashScreenState, InGameState, MenuState, GameOverState

Jeder dieser Staaten eine IGameState oder etwas Implementierung, dann müssen sie nur alle innerhalb einiger GameStateManager oder etwas enthalten ist, so dass Sie zwischen den Staaten zu einem bestimmten Zeitpunkt hüpfen können und nur dieser aktive Zustand würde aktualisiert werden.

Es kann ein bisschen schwierig, wenn man transparente Menüs haben, oder wollen das Spiel im Hintergrund fortsetzen, ohne das Spiel anzeigt, aber ich glaube, die XNA-Website Staat auf diese Weise über den Umgang mit einige Tutorials hat ...

der einfachste Weg ist es Arbeit des Erhaltens etwas wie unten zu haben:

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

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

dann einen Wörterbuch haben, die alle Ihre Spielzustände speichern, dann in Ihrem XNA Hauptteil eine Variable haben, den aktuellen Spielzustand zu speichern, dann Leiten Sie einfach alle Ihre Update-/Render-Aufrufe an den entsprechenden Wert im Wörterbuch um.

Dies ist eine wirklich primitive Art, es zu tun, aber sollte Ihnen die allgemeine Idee zeigen, die dahinter steckt, sie in verschiedene Spielzustände zu trennen. Auf diese Weise kann nur ein Spielstatus gleichzeitig aktiv sein. Wenn Sie also zum Menü zurückkehren, werden Sie genau dort weitermachen, wo Sie aufgehört haben.