Ich bin verwirrt darüber, wie und wann die Methoden des Spiels aufgerufen werden.
Also habe ich gelesen, dass die Sequenz ist:
- Initialisieren
- LoadContent
- Aktualisieren
- Zeichnen
- Inhalt entladen
Wo 3 und 4 sind die Spielschleife, so dass nach Update
genannt wird, Draw
aufgerufen wird, dann Update
, dann Draw
, und so weiter. Die Spielschleife (Update and Draw) wird 60 Mal pro Sekunde ausgeführt.
Dann habe ich an einer anderen Stelle gelesen, dass Update
und Draw
kann zu verschiedenen Zeiten aufgerufen werden und Update
kann mehr als einmal vorher aufgerufen werden Draw
und so weiter.
... und wird am Ende UnloadContent
nach dem Aufruf Update
der Exit
Methode aufgerufen.
Antworten:
Es gibt zwei Möglichkeiten, wie XNA die Spielschleife ausführen kann: Fixed Step und Variable Step. Wenn Sie Ihr Spiel so einrichten, dass Fixed Step ausgeführt wird, wird die Update-Methode basierend auf der angestrebten Spielzeit konsistent aufgerufen. Unabhängig davon, wie schnell Ihr Computer ist, ruft er die Update-Methode immer im gleichen Zeitintervall auf, sodass Update und Draw wie beschrieben nacheinander aufgerufen werden. Wenn Ihr Spiel jedoch langsam läuft, ruft XNA die Update-Methode mehrmals vor der Draw-Methode auf, um "aufzuholen".
Variable Step hingegen versucht nicht, vor dem Aufruf der Draw-Methode "Schritt zu halten" oder mehrere Update-Methodenaufrufe durchzuführen, wenn das Spiel langsam läuft.
BEARBEITEN: Netter Formularbeitrag, der Fixed Step und Variable Step erklärt, ist viel tiefer. gamedev.net
quelle
Machen Sie sich keine Sorgen über UnloadContent, es sei denn, Sie schreiben ein Spiel für Windows und laden nicht verwaltete Inhalte. Wenn Sie nur mit SpriteBatch zeichnen und möglicherweise SoundEffect- und Song-Objekte abspielen, vergessen Sie zunächst UnloadContent ().
Wenn Sie beim Aktualisieren und Zeichnen mit XNA beginnen, denken Sie daran, dass das XNA Framework automatisch Update, dann Zeichnen, dann Aktualisieren, dann Zeichnen ... usw. aufruft. Gibt es Ausnahmen? Ja. Müssen Sie sich um sie kümmern, wenn Sie anfangen? Nein, es sei denn, Sie sind bereits ein erfahrener Spieleentwickler. Wenn ja, nimm meine Entschuldigung an ...
Wenn Ihr Spiel einen festen Zeitschritt verwendet, wird dies verzögert, sodass diese Schleife nicht schneller als der Zeitschritt verläuft. Windows Phone-Projekte fügen eine Codezeile hinzu, um das Spiel auf 30 fps zu korrigieren. Sie werden ein wenig darüber lernen, indem Sie nichts weiter tun, als ein brandneues Windows Game-Projekt und dann ein brandneues Windows Phone Game-Projekt zu erstellen. Suchen Sie im Windows Phone-Projekt nach der einen Codezeile, die den Zeitschritt festlegt.
Der Kommentar oben zum Blick auf Shawn Hargreaves Beitrag ist genau richtig. Tatsächlich ist er DIE Quelle, wenn Sie offen über das XNA-Framework sprechen möchten. Es sind ein paar Jahre Posts, aber das ist eine gute Ressource.
quelle
Ich kenne keine Möglichkeit, die Reihenfolge zu ändern, aber Update und Draw sind nur Funktionen, mit denen Sie sie von anderen Orten aus aufrufen können - obwohl ich mir keine Verwendung vorstellen kann. In der Regel verwenden Sie einfach Update, Draw, Update, Draw usw., wie Sie gesagt haben.
Das Entladen wird aufgerufen, nachdem die Exit-Funktion Ja aufgerufen wurde.
quelle