Android 恒定且可能不准确的帧速率
我正在使用以下代码计算Unity3d 4.0中的帧速率。它应用于NGUI标签上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
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物理模拟所需的秒数,并相应地调整您的固定时间步长。