Ich erstelle ein Rhythmusspiel in C# und Unity, und ich konnte keine direkte Korrelation zwischen den Problemen einiger meiner Spieler und ihrer Hardware feststellen, aber einige davon Sie haben Probleme mit dem Gameplay, das sich im Laufe der Zeit von der Musik entfernt. Es dauert normalerweise ein paar Minuten, bis es auffällt, aber es passiert definitiv und ruiniert das Gefühl des Spiels.Verfolgen der verstrichenen Zeit C#/Unity
Ich verfolge die verstrichene Zeit, indem ich ein Double verwende und Time.deltaTime (die Zeit zwischen Frames) hinzufüge, und ich nehme an, dass es nur sehr kleine Präzisionsfehler gibt, die damit verbunden sind, und das ist es verursacht die allmählichen desyncs.
Gibt es einen besseren Weg, dies genauer zu tun? Ich denke, dass die Zeit, in der das Gameplay gestartet wurde, und dann, wenn jedes Frame von der aktuellen Zeit subtrahiert wird, es genauer machen könnte? Ich habe versucht, die Gameplay-Zeit mit der Audio-Zeit zu synchronisieren (Bass.NET bietet eine Möglichkeit, Song-Position in Sekunden zu bekommen), aber während das für mich und einige andere funktioniert, bringt es andere mit anständiger Hardware zum Stottern (mein Spiel läuft in der Regel auch auf 8-10 Jahre alten PCs).
Sie können stattdessen versuchen, DateTime zu verwenden. – Everts
In Unity 'Time.deltaTime' ist die genaueste Art, Timing-Sachen zu machen. Wenn Sie erklären können, wie Sie es für Ihren Code verwenden und Ihren Code veröffentlichen, können andere vielleicht einen besseren Weg finden. – Programmer
Ich habe erklärt, wie ich es benutze, ich habe ein Double, dass ich Time.deltaTime zu jedem Frame hinzufüge. –