版权声明:本文原创发表于 【请点击连接前往】 ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! |
利用Unity做的手游项目很多时候要保证流畅度,流畅度最直观的表现就是帧率FPS。Unity编辑器模式下的帧率观测几乎没有意义,所以还是自己实现的好。
这里给一个前人写的类,我几乎原封不动,该类只有一个对外设置显示和隐藏的接口,并没有提供其他多余操作。
using UnityEngine; using System.Collections; /// <summary> /// FPS calculate. /// </summary> public class FPSCalc : MonoSingleton<FPSCalc> { public bool ShowFPS = false; public float updateInterval = 0.1f; private float lastInterval; private int frames = 0; private float fps; public void SetVisible(bool visible) { if (instance.ShowFPS != visible) { instance.ShowFPS = visible; } } void Start() { lastInterval = Time.realtimeSinceStartup; frames = 0; } void OnGUI() { if (ShowFPS) { if (fps > 30f) GUI.color = Color.green; else if (fps > 15f) GUI.color = Color.yellow; else GUI.color = Color.red; GUILayout.Label(fps.ToString("f0")); } } void Update() { if (ShowFPS) { ++frames; float timeNow = Time.realtimeSinceStartup; if (timeNow > lastInterval + updateInterval) { fps = (float)frames / (timeNow - lastInterval); frames = 0; lastInterval = timeNow; } } } }