2016-12-25 1 views
0

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?

+0

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

+0

fixedDeltaTime wird standardmäßig immer 0,02f sein. Time.DeltaTime jedoch wird, variieren, auf der Bearbeitungszeit jedes Rahmens :) –

+0

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

Antwort

0

Es kann viele Gründe geben, warum die FPS auf eine spesific Rate gesperrt ist. Die Variable Time.deltaFixedTime ist jedoch immer an einen bestimmten Aktualisierungswert gebunden. Standardmäßig ist es: 0,02 Sekunden, zwischen jedem Update.

Wenn Sie ein FPS-Zähler für das Debuggen möchten, kann ich Ihnen dazu eine refrence geben: http://wiki.unity3d.com/index.php?title=FramesPerSecond

Gründe, warum die Framerate gesperrt ist, auch sein mag, wie @UnholySheep sagte Vsync, Computer Grenzen (obwohl es würde höchstwahrscheinlich herumspringen) und einige andere Gründe.

https://docs.unity3d.com/Manual/class-QualitySettings.html Hier ist ein Link, wo Sie VSync ausschalten können, wenn es sich herausstellen soll.

+0

IIRC VSync Count ist standardmäßig auf „Every VBlank“ (aber ich habe nicht die Einheit in eine Weile benutzt, also bin ich nicht 100% sicher darüber) – UnholySheep

+0

Karo, bestätigen kann. –