android – 常量且可能不准确的帧速率

android – 常量且可能不准确的帧速率,第1张

概述我使用以下代码计算Unity3d 4.0中的帧速率.它适用于NGUI标签. void Update () { timeleft -= Time.deltaTime; accum += Time.timeScale/Time.deltaTime; ++frames; // Interval ended - update GUI tex 我使用以下代码计算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).它只是没有让步.我认为这可能是正确的,但是当我看到探查器时,我可以清楚地看到那里的起伏.所以显然它有点可疑.

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

通过从this questions获取线索,我在第一个答案中尝试了所有方法.即使以下代码返回恒定的58.82 FPS.它只发生在AndroID设备上.在编辑器中我可以看到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 – 常量且可能不准确的帧速率全部内容,希望文章能够帮你解决android – 常量且可能不准确的帧速率所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1127440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存