using UnityEngine; public class FPSCounter : MonoBehaviour { private float updateInterval = 0.5f; private float accum = 0f; private int frames = 0; private float timeleft; private float fps = 0f; private GUIStyle style; private Color goodColor = Color.green; // >60 FPS private Color warnColor = Color.yellow; // 30-60 FPS private Color badColor = Color.red; // <30 FPS void Start() { timeleft = updateInterval; style = new GUIStyle(); style.alignment = TextAnchor.UpperRight; style.fontSize = 20; } void Update() { timeleft -= Time.deltaTime; accum += Time.timeScale / Time.deltaTime; frames++; if (timeleft <= 0f) { fps = accum / frames; timeleft = updateInterval; accum = 0f; frames = 0; } } void OnGUI() { // 根据FPS值设置颜色 if (fps > 60) style.normal.textColor = goodColor; else if (fps > 30) style.normal.textColor = warnColor; else style.normal.textColor = badColor; GUI.Label(new Rect(Screen.width - 150, 10, 140, 30), $"FPS: {fps:0.}", style); } }