using UnityEngine;
using System.Collections;
using UnityEngine.UI;
// 帧数计算器,需要UGUI来显示,其实可以通过写在OnGUI中显示
[RequireComponent(typeof(Text))]
public class FPSCounter : MonoBehaviour
{
const float fpsMeasurePeriod = 0.5f; //FPS测量间隔
private int m_FpsAccumulator = 0; //帧数累计的数量
private float m_FpsNextPeriod = 0; //FPS下一段的间隔
private int m_CurrentFps; //当前的帧率
const string display = "{0} FPS"; //显示的文字
private Text m_Text; //UGUI中Text组件
private void Start()
{
m_FpsNextPeriod = Time.realtimeSinceStartup + fpsMeasurePeriod; //Time.realtimeSinceStartup获取游戏开始到当前的时间,增加一个测量间隔,计算出下一次帧率计算是要在什么时候
m_Text = GetComponent<Text>();
//设置Text位置方法一
RectTransform rt = m_Text.GetComponent<RectTransform>();
rt.sizeDelta = new Vector2(200, 300);
rt.transform.position = new Vector2(100, 100);
rt.transform.Rotate(new Vector3(0, 0, 45));
//设置Text位置方法二:直接将脚本给场景中的Text组件, 场景中调整组将的位置
}
private void Update()
{
// 测量每一秒的平均帧率
m_FpsAccumulator++;
if (Time.realtimeSinceStartup > m_FpsNextPeriod) //当前时间超过了下一次的计算时间
{
m_CurrentFps = (int)(m_FpsAccumulator / fpsMeasurePeriod); //计算
m_FpsAccumulator = 0; //计数器归零
m_FpsNextPeriod += fpsMeasurePeriod; //在增加下一次的间隔
m_Text.text = string.Format(display, m_CurrentFps); //处理一下文字显示
}
}
}
网友评论