Unity3D
fps
아낙시만더
2015. 9. 24. 17:47
반응형
using UnityEngine; using System.Collections; //[AddComponentMenu("SilverStorm/Utility/HUDFPS")] public class HUDFPS : MonoBehaviour { // 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. 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 string text = ""; public GUIStyle styleCounter = new GUIStyle(); public Vector2 position = Vector2.zero; void Start() { timeleft = updateInterval; //styleCounter.alignment = TextAnchor.UpperCenter; //styleCounter.fontSize = 16; //styleCounter.normal.textColor = Color.white; } 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", fps); text = format; // DebugConsole.Log(format,level); timeleft = updateInterval; accum = 0.0F; frames = 0; } } Color oldgui; void OnGUI() { // shadow oldgui = GUI.color; GUI.color = Color.black; GUI.Label(new Rect(position.x+1, position.y+1, Screen.width, styleCounter.fontSize), text, styleCounter); GUI.color = oldgui; // text GUI.Label(new Rect(position.x, position.y, Screen.width, styleCounter.fontSize), text, styleCounter); } }
반응형