Skip to content

Instantly share code, notes, and snippets.

@arun02139
Created November 27, 2017 14:40
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save arun02139/eff750602c395277e1b1c798df3efe1c to your computer and use it in GitHub Desktop.
using UnityEngine;
using UnityEngine.UI;
// http://catlikecoding.com/unity/tutorials/frames-per-second/ (LINK)
public class FPSUI : UIBase
{
static string[] stringsFrom00To99 = {
"00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
"10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
"20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
"30", "31", "32", "33", "34", "35", "36", "37", "38", "39",
"40", "41", "42", "43", "44", "45", "46", "47", "48", "49",
"50", "51", "52", "53", "54", "55", "56", "57", "58", "59",
"60", "61", "62", "63", "64", "65", "66", "67", "68", "69",
"70", "71", "72", "73", "74", "75", "76", "77", "78", "79",
"80", "81", "82", "83", "84", "85", "86", "87", "88", "89",
"90", "91", "92", "93", "94", "95", "96", "97", "98", "99"
};
Text fpsText;
Color originalColor;
public int frameRange = 60;
public int AverageFPS { get; private set; }
int[] fpsBuffer;
int fpsBufferIndex;
protected void Awake()
{
fpsText = transform.FindChild("FPS").GetComponent<Text>();
originalColor = fpsText.color;
}
void Update ()
{
if (fpsBuffer == null || fpsBuffer.Length != frameRange)
{
InitializeBuffer();
}
UpdateBuffer();
CalculateFPS();
}
void InitializeBuffer ()
{
if (frameRange <= 0) {
frameRange = 1;
}
fpsBuffer = new int[frameRange];
fpsBufferIndex = 0;
}
void UpdateBuffer ()
{
fpsBuffer[fpsBufferIndex++] = (int)(1f / Time.unscaledDeltaTime);
if (fpsBufferIndex >= frameRange)
{
fpsBufferIndex = 0;
}
}
void CalculateFPS ()
{
int sum = 0;
for (int i = 0; i < frameRange; i++)
{
int fps = fpsBuffer[i];
sum += fps;
}
AverageFPS = (int)((float)sum / frameRange);
updateFpsText();
}
void updateFpsText()
{
fpsText.text = stringsFrom00To99[Mathf.Clamp(AverageFPS, 0, 99)];
if(AverageFPS <= 30f)
{
fpsText.color = Color.red;
}
else if(AverageFPS <= 45)
{
fpsText.color = Color.yellow;
}
else
{
fpsText.color = originalColor;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment