关于帧数的计算和显示,其实是比较简单的;
但是想写一个简洁,并且高内聚(每个游戏拉过来就能用)还是要花点心思的;
我这里用了一个协程实现循环计算,省去了update里边的代码;用OnGUI而不是UGUI来实现解耦合;
using System.Collections;
using UnityEngine;
public class FrameRateManager : MonoBehaviour
{
[Header("OnGUI for frame rate---")]
public Color textColor = Color.white;
public int guiFontSize = 50;
private string label = string.Empty;
private GUIStyle style = new GUIStyle();
private float count;
private void Awake()
{
// set target frame rate
Application.targetFrameRate = 60;
}
private IEnumerator Start()
{
while (true)
{
count = 1f / Time.deltaTime;
label = string.Format("{0:N2}", count);
yield return new WaitForSeconds(0.2f);
}
}
// show fps
private void OnGUI()
{
style.fontSize = guiFontSize;
style.normal.textColor = textColor;
GUI.Label(new Rect(300f, 200f, 500f, 300f), this.label, this.style);
}
}