Перерисовка спрайтов в пакете спрайтов в игре xna / wp7 - PullRequest
0 голосов
/ 16 января 2011

Я делаю небольшую игру для wp7, и мне было интересно, как перерисовать спрайт внутри спрайтбэтча. Более конкретно, после того, как игра окончена и отображается экран рекордов, если они нажимают кнопку «назад» или в определенной области экрана, титульная страница будет перерисована, и они могут начать играть в игру снова, не выходя из игры. Я снова попытался вызвать spritebatch.draw () с параметрами для титульного листа, но он просто пропускает код, как если бы он это сделал, и этого не происходит.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2011

Я думаю, вам нужно немного больше отделить свою логику. Как уже упоминалось в предыдущем ответе, распространенный способ сделать это - иметь возможность управлять своими игровыми состояниями.

Т.е. 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 есть переменная для хранения текущего игрового состояния, а затем просто перенаправьте все ваши вызовы обновления / рендеринга на соответствующее значение в словаре.

Это ДЕЙСТВИТЕЛЬНО примитивный способ сделать это, но он должен показать вам общую идею разделения его на различные игровые состояния. Таким образом, одновременно может быть активным только одно игровое состояние, то есть, если вы перейдете в меню, а затем вернетесь к игре, вы возобновите игру именно там, где остановились.

0 голосов
/ 17 января 2011

Предполагая, что вы используете метод "Экран" для организации вашего кода (например, [Управление состоянием игры]) 1 , просто перенаправьте их на экран заголовка, и экран заголовка возьмет его оттуда..

Если вы не используете управление состоянием игры, вам нужно будет быть более конкретным, в противном случае, я бы рекомендовал просто переформатировать код, чтобы использовать метод, описанный в ссылке выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...