Unity 中的 deltaTime 是怎么回事?

What is going on with deltaTime in Unity?

首先我想提一下,我正在 Unity 引擎中制作我的第一个项目,所以这个问题可能很愚蠢。据我所知 Time.deltaTime 和 Time.fixedDeltaTime 存储帧之间的大致时间(图形和物理)。我想为我的游戏实现一个简单的 fps 计数器。函数写在下面:

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() 在 Update() 中调用。对于固定时间和 "normal" 增量时间,脚本始终输出 50[hz] 的值。似乎频率锁定在 50 fps。这是正常行为吗? Unity 是否锁定以 50hz 调用 FixedUpdate() 和 update()?如果是这样,我可以在某处更改此值以查看我真正可以获得多少 fps 吗?

FPS 被锁定到特定速率的原因可能有很多。但是,Time.deltaFixedTime 变量始终锁定为特定的更新值。默认情况下是:0.02 秒,在每次固定更新之间。

如果你想要一个 FPS 计数器来调试,我可以给你一个参考:http://wiki.unity3d.com/index.php?title=FramesPerSecond

如@UnholySheep 所说,帧率被锁定的原因可能是 Vsync、计算机限制(尽管它很可能会反弹)和其他一些原因。

https://docs.unity3d.com/Manual/class-QualitySettings.html 这是一个 link,您可以在其中关闭 VSync,如果它打开的话。