반응형
Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Do Something IT

fps 본문

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);
    }
}
반응형

'Unity3D' 카테고리의 다른 글

Cant install visual studio community edition 2013  (0) 2016.07.28
라이브2D  (0) 2016.02.04
MonoSingleton  (0) 2015.09.08
lens flare 햇빛 효과  (0) 2015.09.04
비주얼 스튜디오 편한 단축키  (0) 2015.08.21
Comments