RTMP/Assets/FPSCounter.cs

48 lines
1.2 KiB
C#

using System;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
namespace ZC;
public class FPSCounter : MonoBehaviour
{
[SerializeField]
private Text _txtTime;
[SerializeField]
private Text _txtFps;
private readonly float[] _fpsArray = new float[5];
private float _avr;
private float _min;
private float _max;
private DateTime _startTime;
private void Start()
{
_startTime = DateTime.Now;
}
private void Update()
{
_fpsArray[Time.frameCount % _fpsArray.Length] = 1f / Time.deltaTime;
if (Time.frameCount % this._fpsArray.Length == 0)
{
_avr = this._fpsArray.Sum() / this._fpsArray.Length;
_min = float.MaxValue;
_max = float.MinValue;
foreach (var f in this._fpsArray)
{
if (f < _min)
_min = f;
if (f > _max)
_max = f;
}
this._txtFps.text = $"Avr:{this._avr:n0}\nMin:{this._min:n0}\nMax:{this._max:n0}";
}
var offsetTime = DateTime.Now - this._startTime;
this._txtTime.text = $"Time:{offsetTime.Hours}:{offsetTime.Minutes}:{offsetTime.Seconds}.{offsetTime.Milliseconds}";
}
}