Guten Abend,
Ich habe folgendes Problem, und zwar wie berechnet XNA aus der GameTime die ElapsedGameTime und TotalGameTime.
Ich versuche dieses für mein eigenes Projekt nachzubauen. Mein Problem dabei ist wenn ich ein Breakpoint setze und einige Sekunden warte und wieder starte erhalte ich nicht die korrekte Zeit wie diese eigentlich sein sollte.
Ich benutze Stopwatch für die Reale zeit, nur die Game Time macht mir Probleme.
Ich hoffe ihr könnt mir in dieser Angelegenheit weiter helfen.
MfG
Viper
gametime zwischen den schritten erhöhen und in ner variable speichern. (während eines updateschrittes sollte die stopwatch nichtmehr ausgelesen werden.
erhöhen solltest du die gametime um die laut stopwatch seit dem letzten frame vergangene zeit. die vergangene zeit musst du auf den bruchteil einer sekunde deckeln, sonst haste ein problem beim debuggen. wenn das spiel über netz laufen soll, musste es halt etwas schneller laufen lassen nach dem debuggen, bis der rückstand aufgehoben ist.
Danke, ist aber grade schwer zu verstehen könntest du mir kleines Beispiel dazu geben? Wenn es dir keine umständen macht.
Machen wir das anders.
private Stopwatch m_RealTime;
private TimeSpan m_TotalElapsedRealTime;
private TimeSpan m_lastElapsedRealTime;
private TimeSpan m_GameTime;
private long m_TotalElapsedGameTime;
private long m_LastElapsedGameTime;
public void Update ()
{
this.m_lastElapsedRealTime = this.m_TotalElapsedRealTime;
this.m_TotalElapsedRealTime = this.m_RealTime.Elapsed;
this.m_LastElapsedGameTime = this.m_TotalElapsedGameTime;
this.m_TotalElapsedGameTime = Stopwatch.GetTimestamp ();
this.m_GameTime = this.m_GameTime.Add (new TimeSpan (this.m_TotalElapsedGameTime - this.m_LastElapsedGameTime));
}
public GameTime GetGameTime ()
{
return new GameTime (this.m_RealTime.Elapsed, this.m_TotalElapsedRealTime - this.m_lastElapsedRealTime,
this.m_GameTime, new TimeSpan (this.m_TotalElapsedGameTime - this.m_LastElapsedGameTime));
}