提要:以前是UNITY4,后来用了新的UI,于是GUIText这种东西就没有了,研究了很久。。。。
----------------------------
这里我想拖个GUI文字框显示FPS,于是代码是这样,这段代码是我在UNITY官方BBS找到并修改的,感谢原作者分享
using UnityEngine; using System.Collections; using UnityEngine.UI; //引用里加入这个 public class getFPS : MonoBehaviour { // Use this for initialization // Attach this to a GUIText to make a frames/second indicator. // // It calculates frames/second over each updateInterval, // so the display does not keep changing wildly. // // It is also fairly accurate at very low FPS counts (<10). // We do this not by simply counting frames per interval, but // by accumulating FPS for each frame. This way we end up with // correct overall FPS even if the interval renders something like // 5.5 frames. public float updateInterval = 0.5F; private float accum = 0; // FPS accumulated over the interval private int frames = 0; // Frames drawn over the interval private float timeleft; // Left time for current interval void Start() { if (!GetComponent<Text>()) { Debug.Log("这个组建需要加载在新UI的Text上"); enabled = false; return; } timeleft = updateInterval; } void Update() { timeleft -= Time.deltaTime; accum += Time.timeScale / Time.deltaTime; ++frames; // Interval ended - update GUI text and start new interval if (timeleft <= 0.0) { // display two fractional digits (f2 format) float fps = accum / frames; string format = System.String.Format("{0:F2} FPS", fps); GetComponent<Text>().text = format; if (fps < 30) GetComponent<Text>().material.color = Color.yellow; else if (fps < 10) GetComponent<Text>().material.color = Color.red; else GetComponent<Text>().material.color = Color.green; // DebugConsole.Log(format,level); timeleft = updateInterval; accum = 0.0F; frames = 0; } } }