一、功能介紹
本教程實現一個 FPS 顯示腳本,支持 TextMeshProUGUI 組件。腳本會每秒更新一次幀率,并顯示在?UI 上,便于開發和調試時觀察性能變化。
二、完整代碼
將以下代碼保存為?FPS.cs?腳本:
using UnityEngine;
using TMPro;[RequireComponent(typeof(TextMeshProUGUI))]
public class FPS : MonoBehaviour
{private TextMeshProUGUI labelText;private float deltaTime = 0.0f;private void Awake(){labelText = GetComponent<TextMeshProUGUI>();}private void Start(){InvokeRepeating("UpdateFPS", 1.0f, 1.0f);}private void Update(){deltaTime += (Time.unscaledDeltaTime - deltaTime) * 0.1f;}private void UpdateFPS(){float fps = 1.0f / deltaTime;labelText.text = "幀率: " + Mathf.Ceil(fps).ToString();}
}
三、使用步驟
1. 導入 TextMeshPro 包
在 Unity?編輯器中,確保已導入?TextMeshPro(一般新項目自帶)。
2. 創建?UI?文本對象
- 在場景中創建一個 Canvas(畫布)。
- 在 Canvas 下創建一個?TextMeshPro?- Text 對象(GameObject -> UI?-> Text - TextMeshPro)。
3. 掛載腳本
- 將上面的?FPS.cs?腳本拖到 TextMeshPro 組件所在的 GameObject 上。
4. 運行游戲
點擊播放,UI 上會實時顯示當前幀率。
四、效果展示
運行后,UI 上會每秒刷新一次,顯示類似如下內容:
幀率: 60
?
五、原理說明
- deltaTime?計算:通過?Time.unscaledDeltaTime?獲取每幀的真實耗時,平滑處理后用于計算?FPS。
- InvokeRepeating:每秒調用一次?UpdateFPS,減少 UI 刷新頻率,避免性能浪費。
- TextMeshProUGUI:高質量文本渲染,適合現代 UI?需求。
六、常見問題
- 未顯示幀率:請確認腳本已掛載到?TextMeshProUGUI?組件所在的對象上。
- 報錯找不到?TextMeshProUGUI:請確保已導入?TextMeshPro 包。
?