通过每0.5秒测量帧数(Update执行的次数),再相除并取整,得到每半秒更新一次的fps值。
不需要使用协程,现将代码粘贴如下。
public class FPSCounter : MonoBehaviour
{
const float fpsMeasurePeriod = 0.5f;
//测量周期
private int m_FpsAccumulator = 0;
//累加器
private float m_FpsNextPeriod = 0;
//下一次测量的时间
private int m_CurrentFps;
//当前的fps
const string display = "{0} FPS";
private Text m_Text;
private void Start()
{
m_FpsNextPeriod = Time.realtimeSinceStartup + fpsMeasurePeriod;
m_Text = GetComponent<Text>();
}
private void Update()
{
// 测量每秒的平均帧数
m_FpsAccumulator++;
//游戏开始到现在的实时时间和下一次测量的标准时间做比较
if (Time.realtimeSinceStartup > m_FpsNextPeriod)
{
m_CurrentFps = (int) (m_FpsAccumulator/fpsMeasurePeriod);
//if成立时的积累了的帧数除以0.5,强制为整数
m_FpsAccumulator = 0;
//重置帧数计数器
m_FpsNextPeriod += fpsMeasurePeriod;
//下一个if将在0.5秒后成立
m_Text.text = string.Format(display, m_CurrentFps);
//更新text组件
}
}
}