Created
November 27, 2017 14:40
-
-
Save arun02139/eff750602c395277e1b1c798df3efe1c to your computer and use it in GitHub Desktop.
This file contains 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 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