簡體   English   中英

在XNA / WP7游戲的SpriteBatch中重繪Sprite

[英]Redrawing sprites in a spritebatch in xna/wp7 game

我正在為wp7做一個小游戲,我想知道如何在spritebatch中重繪一個sprite。 更具體地,在游戲結束並且如果他們按下后退按鈕或者在屏幕的特定區域中繪制高分屏幕,則標題頁面將被重繪,並且他們可以再次開始玩游戲而不退出游戲。 我嘗試再次調用spritebatch.draw(),其參數用於標題頁,但它只是跳過了代碼,就好像沒有這樣做一樣。

非常感謝。

假設您正在使用“屏幕”方法來組織代碼(即[游戲狀態管理]) 1 ,只需將它們重定向到標題屏幕,標題屏幕就會從那里開始。

如果您不使用游戲狀態管理,則需要更加具體,否則,建議您重新格式化代碼以使用上面鏈接中描述的方法。

我認為您需要更多地分離邏輯。 正如前面的答案所提到的,執行此操作的一種常見方法是擁有一種管理游戲狀態的方法。

即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主要部分中有一個變量來存儲當前游戲狀態,然后只需將所有更新/渲染調用重定向到字典中的相關值即可。

這是一種非常原始的方法,但是應該向您展示將其分為不同游戲狀態的總體思路。 這樣,一次只能激活一個游戲狀態,這意味着如果您轉到菜單然后返回游戲,您將精確地從上次退出的位置開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM