Created
July 2, 2013 10:02
-
-
Save sakim/5908118 to your computer and use it in GitHub Desktop.
Unity3D: FramePerSecond for UILabel of NGUI
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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