Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 恒定且可能不准确的帧速率_Android_Unity3d_Game Physics_Frame Rate - Fatal编程技术网

Android 恒定且可能不准确的帧速率

Android 恒定且可能不准确的帧速率,android,unity3d,game-physics,frame-rate,Android,Unity3d,Game Physics,Frame Rate,我正在使用以下代码计算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 &l

我正在使用以下代码计算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;
            }
    }
void更新(){
timeleft-=Time.deltaTime;
累计+=Time.timeScale/Time.deltaTime;
++框架;
//间隔结束-更新GUI文本并启动新间隔

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


也许你可以用其他方法来解决你在物理上遇到的任何问题,而不需要太多地降低固定时间步长。

所以我只需要增加固定时间步长?我可以将最大时间步长保持在0.017吗?@Creator我想这可能行得通。你可以用不同的值进行实验。你也可以尝试直接在设备上分析,看看有多少m物理模拟所需的秒数,并相应地调整您的固定时间步长。