在游戏里显示 FPS(帧率),通常是为了让玩家了解游戏的流畅度。不同游戏引擎和平台有不同的实现方式,以下是几种常见的方式:
✅ 一、在游戏引擎中显示 FPS
1. Unity(C#)
-
方法:使用
Time.deltaTime或Time.timeScale来计算帧率。 -
示例代码:
using UnityEngine; public class ShowFPS : MonoBehaviour { void Update() { float frameRate = 1 / Time.deltaTime; Debug.Log("FPS: " + frameRate); } } -
显示方式:在 Unity 的 Console 中查看输出,或者通过
Debug.Log的方式显示。
2. Unreal Engine(C++/C#)
-
方法:使用
FpsCounter或FpsTimer类。 -
示例代码:
#include "FpsCounter.h" void FpsCounter::Initialize() { // 初始化 FPS 计数器 } void FpsCounter::Update() { // 更新 FPS } -
显示方式:在 UE4 的 Game Window 或 HUD 中显示。
3. Godot(GDScript)
-
方法:使用
Timer或Clock来计算 FPS。 -
示例代码:
var fps_count = 0 var fps_timer = 0.0 func _process(delta): fps_timer += delta if fps_timer >= 1.0: fps_count = Math.floor(time_step * 60) fps_timer = 0.0 # 显示 FPS print("FPS: " + str(fps_count))
✅ 二、在游戏界面中显示 FPS(HUD)
1. Unity(C#)
-
创建 HUD:
-
创建一个
Text组件,设置字体、颜色、位置。 -
在
Update()中更新文本内容:public Text fpsText; void Update() { fpsText.text = "FPS: " + (1 / Time.deltaTime).ToString("0.00"); }
-
-
显示位置:在 Canvas 中拖拽
Text组件到屏幕某个位置。
2. Unreal Engine(C++)
- 创建 HUD:
- 使用
UTextBlock或UText组件。 - 在
HUD的Update()函数中更新文本:void AMyHUD::UpdateFPS() { FString FStringFPS = FString::FromInt(FpsCounter::GetFPS()); TextBlock->SetText(FStringFPS); }
- 使用
- 显示位置:在 Canvas 中拖拽
TextBlock到屏幕某个位置。
✅ 三、在游戏客户端中显示 FPS(PC/主机)
1. PC(Steam/PlayStation)
- 方法:
- 在游戏设置中查看 Performance 或 Frame Rate。
- 使用第三方工具(如 FpsCounter、Fraps、PerfHUD)来显示 FPS。
2. 主机(如 Xbox、PS5)
- 方法:
- 在游戏设置中查看 Performance 或 Frame Rate。
- 使用第三方工具(如 Xbox Game Bar、PS5 Performance Monitor)。
✅ 四、在游戏开发中隐藏 FPS(不显示)
- 如果你不希望显示 FPS,可以:
- 不在
Update()中输出Debug.Log。 - 在
HUD中隐藏文本。 - 使用
Debug.Log的if条件判断,只在特定条件下显示。
- 不在
✅ 五、总结
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
Unity 的 Debug.Log |
游戏开发调试 | 简单易用 | 会影响性能 |
| Unreal Engine 的 HUD | 游戏界面 | 美观、实时 | 需要开发经验 |
| 通用工具(如 Fraps) | PC/主机 | 无需代码 | 需要安装插件 |
如果你是开发者,可以使用 Unity、Unreal、Godot 等引擎的 FPS 显示功能;如果是普通玩家,可以使用 第三方工具(如 Fraps、PerfHUD、FpsCounter)来查看 FPS。
需要我帮你写一个 Unity 的 FPS 显示代码 或 Unreal 的 HUD 显示代码 吗?