Eu tenho a seguinte idéia sobre o processamento de entrada do teclado. Capturamos a entrada na classe "principal" do jogo, como esta:
protected override void Update(GameTime gameTime)
{
this.CurrentKeyboardState = Keyboard.GetState();
// main :Game class logic here
base.Update(gameTime);
this.PreviousKeyboardState = this.CurrentKeyboardState;
}
reutilize os estados do teclado (que têm internal
escopo) em todos os outros componentes do jogo. As razões por trás disso são 1) minimizar a carga de processamento do teclado e 2) reduzir a "poluição" de todas as outras classes com variáveis de estado do teclado semelhantes.
Como eu sou um noob no desenvolvimento de jogos e XNA, gostaria de saber se tudo isso parece razoável.
ATUALIZAÇÃO: Se alguém estiver interessado, a classe de utilidade real, como sugerido por David Gouveia , que criei pode ser encontrada aqui .
fonte
KeyboardState
objetos associados aos registros de data e hora em uma estrutura. Como você jogar o seu jogo para o teste, pegue agameTime.TotalGameTime
cada quadro e colocá-lo em um struct com o_currentKeyboardState
e no jogo parar gravação que lista deKeyboardState
s eTimeSpan.Milliseconds
int
s para o disco. Então, quando você executar o jogo em modo de teste de entrada, leia asKeyboardState
s eint
é a partir deste arquivo e lê-los a partir da verificação de lista que o próximoKeyboardState
's timestamp associado corresponde ao atualgameTime.TotalGameTime.Milliseconds
propriedade.