关于帧数的计算和显示,其实是比较简单的;
但是想写一个简洁,并且高内聚(每个游戏拉过来就能用)还是要花点心思的;
我这里用了一个协程实现循环计算,省去了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 rateApplication.targetFrameRate = 60;}private IEnumerator Start(){while (true){count = 1f / Time.deltaTime;label = string.Format("{0:N2}", count);yield return new WaitForSeconds(0.2f);}}// show fpsprivate void OnGUI(){style.fontSize = guiFontSize;style.normal.textColor = textColor; GUI.Label(new Rect(300f, 200f, 500f, 300f), this.label, this.style);}
}