- Home /
Fixing timestep to lower value showing wrong FPS
I am using the following code to calculate Frame Rate. It's applied on a NGUI label.
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;
}
}
It was working previously, or at least seemed to be working.Then I was having some problem with physics, so I changed the fixed timestep to 0.005 and the Max timestep to 0.017 . Yeah I know it's too low, but my game is working fine on that.
Now the problem is the above FPS code returns 58.82 all the time. I've checked on separate devices (Android). It just doesn't budge. I thought it might be correct, but when I saw profiler, I can clearly see ups and downs there. So obviously it's something fishy.
Am I doing something wrong? I copied the code from somewhere (must be from the script wiki). Is there any other way to know the correct FPS?
Update: By taking cues from this questions, I've tried all methods in the first answer. Even the following code is returning a constant 58.82 FPS. It's happening in the android device only. In the editor I can see fps difference.
float fps = 1.0f/Time.deltaTime
;
So I checked the value of Time.deltaTime and it's 0.017 constant in the device. How can this be possible :-/
Your answer
Follow this Question
Related Questions
How to fix extremely jerky movement on AI car? 1 Answer
Physics behaviour changing with framerate - Is FixedUpdate() actually working properly? 3 Answers
Locking the frame rate 0 Answers
Why is the Motorola Xoom (Dual Core) slower than the Samsung Galaxy S (Single Core)? 2 Answers
Is it possible to get above 30 FPS on an Android device? 2 Answers