Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 常量且可能不准确的帧速率大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用以下代码计算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 – 常量且可能不准确的帧速率所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。