Skip to content

Instantly share code, notes, and snippets.

@sakim
Created July 2, 2013 10:02
Show Gist options
  • Save sakim/5908118 to your computer and use it in GitHub Desktop.
Save sakim/5908118 to your computer and use it in GitHub Desktop.
Unity3D: FramePerSecond for UILabel of NGUI
using UnityEngine;
using System.Collections;
public class HUDFPS : MonoBehaviour {
// Attach this to a UILabel to make a frames/second indicator.
//
// It calculates frames/second over each updateInterval,
// so the display does not keep changing wildly.
//
// It is also fairly accurate at very low FPS counts (<10).
// We do this not by simply counting frames per interval, but
// by accumulating FPS for each frame. This way we end up with
// correct overall FPS even if the interval renders something like
// 5.5 frames.
public float updateInterval = 0.5F;
private float accum = 0; // FPS accumulated over the interval
private int frames = 0; // Frames drawn over the interval
private float timeleft; // Left time for current interval
private UILabel label;
void Awake() {
Application.targetFrameRate = 60;
label = gameObject.GetComponent<UILabel>();
}
void Start() {
if( !label ) {
Debug.Log("UtilityFramesPerSecond needs a UILabel component of NGUI!");
enabled = false;
return;
}
timeleft = updateInterval;
}
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);
label.text = format;
timeleft = updateInterval;
accum = 0.0F;
frames = 0;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment