gpt4 book ai didi

android - 恒定且可能不准确的帧率

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:43 25 4
gpt4 key购买 nike

我正在使用以下代码计算 Unity3d 4.0 中的帧速率。它应用于 NGUI 标签。

void Update () {
timeleft -= Time.deltaTime;
accum += Time.timeScale/Time.deltaTime;
++frames;

// Interval ended - update GUI text and start new interval
if( timeleft <= 0.0 )
{
// display two fractional digits (f2 format)
float fps = accum/frames;
string format = System.String.Format("{0:F2} FPS",fps);
FPSLabel.text = format;
timeleft = updateInterval;
accum = 0.0F;
frames = 0;
}
}

它以前是有效的,或者至少看起来是有效的。后来我遇到了物理问题,所以我将固定时间步长更改为 0.005 并将最大时间步长更改为 0.017 。是的,我知道它太低了,但我的游戏在这方面运行良好。
现在的问题是上面的 FPS 代码一直返回 58.82。我检查了不同的设备 (Android)。它就是不动。我认为这可能是正确的,但是当我看到 profiler 时,我可以清楚地看到那里的起伏。所以很明显这是可疑的。

我做错了什么吗?我从某处复制了代码(必须来自脚本 wiki)。有没有其他方法可以知道正确的 FPS?

通过从 this questions 中获取线索,我已经尝试了第一个答案中的所有方法。即使是以下代码也返回恒定的 58.82 FPS。它只发生在安卓设备上。在编辑器中,我可以看到 fps 差异。

float fps = 1.0f/Time.deltaTime;

所以我检查了 Time.deltaTime 的值,它在设备中是 0.017 常量。这怎么可能:-/

最佳答案

在我看来,fps 计数器是正确的,58.82 的 FPS 是由物理时间设置的变化引起的。物理引擎可能无法在可用时间步长(0.005,非常低)内完成计算,这意味着它将继续计算直到达到最大时间步长,在您的情况下为 0.017。这意味着所有帧将占用 0.017 加上您可能拥有的渲染/脚本的任何其他开销。 1/0.017 正好等于 58.82。

也许您可以通过其他方式解决您在物理方面遇到的任何问题,而无需将固定时间步长降低太多。

关于android - 恒定且可能不准确的帧率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16076180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com