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,如果它打开的话。
首先我想提一下,我正在 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,如果它打开的话。