你的显示帧率为什么明显跳动,不平滑
错误用例
void Update()
{
++frameCount;
var fps = 1 / Time.deltaTime; // 除法,每帧都在产生误差;尤其在某些机器浮点精度不够的情况下
total += fps;
if(frameCount > MaxCount)
{
var FPS = total / frameCount;
UpdateFPS(FPS.ToString()); // show this string
frameCount = 0;
total = 0;
}
}
加减法一般是没有精度损失的(不考虑溢出)。
正确1
void Update()
{
var delta = Time.deltaTime;
totalTime += delta;
queDeltaTime.Enqueue(delta);
if (queDeltaTime.Count > maxFrameCount)
{
totalTime -= queDeltaTime.Dequeue();
}
fps = queDeltaTime.Count / totalTime;
UpdateFPS(fps.ToString());
}
正确2
void Update()
{
++_frames;
timeSinceUpdate += Time.deltaTime;
if (timeSinceUpdate > SAMPLE_INTERVAL)
{
_fps = _frames / timeSinceUpdate;
UpdateFPS(_fps);
_frames = 0;
timeSinceUpdate = 0;
}
}