Zunächst möchte ich erwähnen, dass ich mein erstes Projekt, das jemals in Unity-Engine mache so das Problem ziemlich dumm sein könnte. Soweit ich weiß, speichern Time.deltaTime und Time.fixedDeltaTime die ungefähre Zeit zwischen Frames (Grafik und Physik). Ich wollte einen einfachen fps-Zähler zu meinem Spiel implementieren. Funktion ist unten geschrieben:Was ist los mit DELTA in Unity?
void FPS_Counter()
{
float frequency_physics = 1f/Time.fixedDeltaTime;
float frequency_graphics = 1f/Time.deltaTime;
fps.text = "Phys: " + frequency_physics.ToString("N0") + "\n" + "Graph: " + frequency_graphics.ToString("N0");
}
FPS_Counter() wird in Update() aufgerufen. Das Skript gibt immer Werte von 50 [hz] für feste und "normale" Delta-Zeiten aus. Es scheint, dass die Frequenz auf 50 fps gesperrt ist. Ist das ein normales Verhalten? Blockiert Unity beim Aufrufen von FixedUpdate() und update() um 50hz? Wenn ja, kann ich diesen Wert irgendwo ändern, um zu sehen, wie viel fps ich wirklich bekommen kann?
Wenn Sie VSync aktiviert haben und die Aktualisierungsrate der Physiksimulation auf 0,02 ms eingestellt ist (die Standardeinstellung), dann sind diese Ergebnisse zu erwarten. – UnholySheep
fixedDeltaTime wird standardmäßig immer 0,02f sein. Time.DeltaTime jedoch wird, variieren, auf der Bearbeitungszeit jedes Rahmens :) –
das Handbuch finden Sie auf [Time Manager] (https://docs.unity3d.com/Manual/class-TimeManager.html) und [Qualitätseinstellungen] (https://docs.unity3d.com/Manual/class-QualitySettings.html), wie diejenigen – UnholySheep