Ich habe folgende Idee zur Verarbeitung von Tastatureingaben. Wir erfassen Eingaben in der "Hauptspielklasse" wie folgt:
protected override void Update(GameTime gameTime)
{
this.CurrentKeyboardState = Keyboard.GetState();
// main :Game class logic here
base.Update(gameTime);
this.PreviousKeyboardState = this.CurrentKeyboardState;
}
Verwenden Sie dann die Tastaturzustände (die einen internal
Gültigkeitsbereich haben) in allen anderen Spielkomponenten wieder. Die Gründe dafür sind 1) Minimierung der Tastaturverarbeitungslast und 2) Verringerung der "Verschmutzung" aller anderen Klassen mit ähnlichen Tastaturstatusvariablen.
Da ich sowohl in der Spiel- als auch in der XNA-Entwicklung ein ziemlicher Neuling bin, würde ich gerne wissen, ob dies alles vernünftig klingt.
UPDATE: Wenn jemand interessiert ist, tatsächliche Utility - Klasse, wie vorgeschlagen David Gouveia , die ich angelegt habe hier gefunden werden kann .
quelle
KeyboardState
Objekten, die Zeitstempeln zugeordnet sind, in einer Struktur behalten . Wenn Sie Ihr Spiel zum Testen spielen, greifen Sie zugameTime.TotalGameTime
jedem Frame und fügen Sie ihn in eine Struktur ein._currentKeyboardState
Schreiben Sie beim Beenden des Spiels die Liste derKeyboardState
s undTimeSpan.Milliseconds
int
s auf die Festplatte. Wenn Sie das Spiel dann im Test-Eingabemodus ausführen, lesen Sie dieKeyboardState
s undint
s aus dieser Datei und lesen Sie sie aus der Liste, um zu überprüfen, ob derKeyboardState
zugehörige Zeitstempel der nächsten mit der aktuellengameTime.TotalGameTime.Milliseconds
Eigenschaft übereinstimmt .