Страница 1 из 1

Пример счётчика кадров(FPS).

СообщениеДобавлено: 21 янв 2010, 14:32
AndrewSt
Привожу здесь свой первый простенький скрипт.
Вешаем его на ГО и наслаждаемся.

Вот основные возможности скрипта:
1.Можно изменять время обновления счетчика в редакторе.
2.Можно изменить режим обновления счетчика (InvokeRepeating или FixedUpdate)
3.Отрисовка на экране от задание координат
4.Отрисовка средного значения FPS.

Код: Выделить всё
using UnityEngine;
using System.Collections;

public class FpsShow : MonoBehaviour {

   public float fpsUpdateInterval = 1.0f;
   public bool useInvoke = true;
   public bool printAvgFps = false;
   public Vector2 pos;

   private int fps = 60;
   private int fpsAvg = 60;
   private float fpsLastUpdate = 0.0f;
   private float fpsLastFrame = 0.0f;

   void Start () {
      if(useInvoke)
         InvokeRepeating("UpdateFps", fpsUpdateInterval, fpsUpdateInterval);
   }

   void UpdateFps()
   {
      fps = Mathf.RoundToInt((Time.frameCount-fpsLastFrame) / (Time.time-fpsLastUpdate));
      fpsAvg = Mathf.RoundToInt(Time.frameCount / Time.time);
      fpsLastUpdate = Time.time;
      fpsLastFrame = Time.frameCount;
   }

   void FixedUpdate()
   {
      if (useInvoke)
         return;

      if (fpsLastUpdate + fpsUpdateInterval < Time.time)
         UpdateFps();
   }

   void OnGUI()
   {
      GUI.Label(new Rect(pos.x, pos.y, 100, 20), "FPS:"+fps.ToString());

      if(printAvgFps)
         GUI.Label(new Rect(pos.x, pos.y+20, 100, 20), "FPS avg:"+fpsAvg.ToString());
   }
}