- Home /
Benchmark FPS Counter
I am making a Benchmark for Android, i have a script that just counts the FPS at the time, but i need a script or asset that counts the fps, and the average FPS, and maybe something that shows the lowest and highest FPS. i have looked at the FPS counter on the asset store, but im really on a budget and i really dont want to buy it. could someone please help me out?
Answer by Kiwasi · Jun 22, 2014 at 03:39 AM
Go back to the asset store and search again. First thing that pops up with your keyword is free. Second thing is close enough to free as makes no difference.
Answer by AlucardJay · Jun 22, 2014 at 03:33 AM
This is the FPS script from the Unity Car Tutorial. You can attach this to any gameObject, or uncomment the guiText.text line and attach it to a GUIText object (and remove the OnGUI function) :
// Attach this to a GUIText 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.
var updateInterval = 1.0;
private var accum = 0.0; // FPS accumulated over the interval
private var frames = 0; // Frames drawn over the interval
private var timeleft : float; // Left time for current interval
private var fps = 15.0; // Current FPS
private var lastSample : double;
private var gotIntervals = 0;
function Start()
{
timeleft = updateInterval;
lastSample = Time.realtimeSinceStartup;
}
function GetFPS() : float { return fps; }
function HasFPS() : boolean { return gotIntervals > 2; }
function Update()
{
++frames;
var newSample = Time.realtimeSinceStartup;
var deltaTime = newSample - lastSample;
lastSample = newSample;
timeleft -= deltaTime;
accum += 1.0 / deltaTime;
// Interval ended - update GUI text and start new interval
if( timeleft <= 0.0 )
{
// display two fractional digits (f2 format)
fps = accum/frames;
// guiText.text = fps.ToString("f2");
timeleft = updateInterval;
accum = 0.0;
frames = 0;
++gotIntervals;
}
}
function OnGUI()
{
GUI.Box(new Rect(Screen.width-160, 10, 150, 40), fps.ToString("f2") + " | QSetting: " + QualitySettings.currentLevel);
}