FPS即每秒屏幕刷新的帧数,即 帧数/时间 ,而Update函数每一帧执行一次,我们可以利用这点很方便的得出FPS,看代码:
public class Test1 : MonoBehaviour {
float timePassed = 0f;
float FrameCount = 0f;
int FPS = 0;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
FrameCount = FrameCount + 1; //帧数+1
timePassed = timePassed + Time.deltaTime; //时间+Time.deltaTime
if (timePassed > 1) { //每秒测一次
FPS = (int) (FrameCount / timePassed); //得到FPS
timePassed = 0f; //置零
FrameCount = 0f;
}
}
void OnGUI () {
GUI.Label (new Rect (0, 0, 100, 100), "FPS:" + FPS);
}
}
通过OnGUI里的GUI.Lable方法可以在屏幕内形成文本框,参数1位Rect型,是文本的位置,第二个是文本内容。
image.png
如果我们想调整文本的位置等其他信息,在第三个参数添加上一个GUIStyle类型即可
public class Test1 : MonoBehaviour {
float timePassed = 0f;
float FrameCount = 0f;
int FPS = 0;
GUIStyle style;
// Use this for initialization
void Start () {
style = new GUIStyle ();
style.normal.textColor = new Color (1.0f, 0.5f, 0.0f); //颜色
style.fontSize = 18; //字体大小
}
// Update is called once per frame
void Update () {
FrameCount = FrameCount + 1; //帧数+1
timePassed = timePassed + Time.deltaTime; //时间*Time.deltaTime
if (timePassed > 1) { //每秒测一次
FPS = (int) (FrameCount / timePassed); //得到FPS
timePassed = 0f; //置零
FrameCount = 0f;
}
}
void OnGUI () {
GUI.Label (new Rect (0, 0, 100, 100), "FPS:" + FPS, style);
}
}
上面在Start()方法里设置了字体的颜色和大小,然后我们还调整了文本框的位置
image.png
还不错。