Поэтому я использую enum
для состояний игры. Когда я нахожусь в состоянии game playing
, я могу сделать паузу и вернуться в состояние main menu
. Но если я нажму Play game
и снова перейду к game playing
, все будет так, как я оставил. Я ищу способ как-то «перезапустить/обновить/сбросить» состояние game playing
. Так что, если я вернусь к этому, мне придется начать все сначала.
C # XNA - любой способ обновить игровые состояния?
Ответы (2)
Теперь у вас есть некоторый код (предположительно), который инициализирует ваше игровое состояние при запуске программы. Вам нужно выделить этот код (при необходимости), чтобы его также можно было вызывать для инициализации состояния игры в любое время. Например, когда вы начинаете новую игру, т. е. переводите свое игровое состояние в «игру».
Действительно, большую часть кода инициализации (то есть все, кроме того, что не нужно повторно инициализировать в новой игре), вы, вероятно, захотите запустить только тогда. Запуск его при запуске программы, а затем снова позже является излишним и только замедляет время загрузки.
Initialize()
?
- person PowerUser; 17.10.2014
В моем игровом классе есть такие списки, как «Враги», «Взрывы», «Пули»… а внутри класса Gampleay у меня есть подпрограмма Init, которая выполняется, когда состояние изменяется на «игровой процесс». Он очищает все и загружает уровень.
в псевдокоде выглядит так:
Class GamePlay
Sub Init
Enemies.Clear()
Explosions.Clear()
Bullets.Clear()
Paralax.Clear()
Stars.Clear()
LoadLevel(lvl)
End Sub
Sub LoadLevel(lvl)
Stars.Geneate(200)
Paralax.Add(new Paralax(type, position, velocity))
End Sub
Sub Update
if (mainship.fire) bullets.fire()
End Sub
Sub Draw
End Sub
End Class
state machine
- person MickyD; 18.10.2014
enum
, добавьте это.. также покажите некоторый код, чтобы мы могли видеть, как выглядит ваше перечисление. - person MethodMan   schedule 17.10.2014