using UnityEngine; using UnityEngine.UI; namespace Crosstales.UI.Util { /// Simple FPS-Counter. public class FPSDisplay : MonoBehaviour { #region Variables /// Text component to display the FPS. [Tooltip("Text component to display the FPS.")] public Text FPS; /// Update every set frame. [Tooltip("Update every set frame."), Range(1, 300)] public int FrameUpdate = 5; private float deltaTime; private float elapsedTime; private float msec; private float fps; private const string wait = "...calculating FPS..."; private const string red = "FPS: {0:0.} ({1:0.0} ms)"; private const string orange = "FPS: {0:0.} ({1:0.0} ms)"; private const string green = "FPS: {0:0.} ({1:0.0} ms)"; #endregion #region MonoBehaviour methods private void Update() { deltaTime += (Time.deltaTime - deltaTime) * 0.1f; elapsedTime += Time.deltaTime; if (elapsedTime > 1f) { if (Time.frameCount % FrameUpdate == 0) { msec = deltaTime * 1000f; fps = 1f / deltaTime; if (fps < 15f) { FPS.text = string.Format(red, fps, msec); } else if (fps < 29f) { FPS.text = string.Format(orange, fps, msec); } else { FPS.text = string.Format(green, fps, msec); } } } else { FPS.text = wait; } } #endregion } } // © 2017-2020 crosstales LLC (https://www.crosstales.com)