Unity显示FPS信息代码

using UnityEngine;
using System.Collections;

public class FPS : MonoBehaviour
{
    #region 修改版
    //// 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
    
    //void Start()
    //{
    //    if (!guiText)
    //    {
    //        Debug.Log("UtilityFramesPerSecond needs a GUIText component!");
    //        enabled = false;
    //        return;

    //    }
    //    timeleft = updateInterval;  
    //}
    
    //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);
    //        guiText.text = format;
            
    //        if (fps < 30)
    //            guiText.material.color = Color.yellow;
    //        else 
    //            if (fps < 10)
    //            guiText.material.color = Color.red;
    //        else
    //            guiText.material.color = Color.green;
    //        //  DebugConsole.Log(format,level);
    //        timeleft = updateInterval;
    //        accum = 0.0F;
    //        frames = 0;
    //    }
    //}
    #endregion

    #region 修改版2显示帧率
    public float f_UpdateInterval = 0.5F;
    private float f_LastInterval;
    private int i_Frames = 0;
    private float f_Fps;
    void Start()
    {
        f_LastInterval = Time.realtimeSinceStartup;
        i_Frames = 0;
    }

    void OnGUI()
    {
        GUI.Label(new Rect(0, 100, 200, 200), "FPS:" + f_Fps.ToString("f2"));
    }

    void Update()
    {
        ++i_Frames;

        if (Time.realtimeSinceStartup > f_LastInterval + f_UpdateInterval)
        {
            f_Fps = i_Frames / (Time.realtimeSinceStartup - f_LastInterval);
            i_Frames = 0;
            f_LastInterval = Time.realtimeSinceStartup;
        }
    }
    #endregion

}

如上。两个都能使用。喜欢哪个用哪个!

本文链接:

https://www.bobsong.net/446.html
1 + 2 =
快来做第一个评论的人吧~