想象一下,你在看一部动画片
Unity是怎么数的呢? 1. 计时器开始计时 Unity在开始画一张画(渲染一帧)的时候,按下秒表的“开始”按钮。 2. 画完这一帧 当这一帧画面渲染完成,Unity按下秒表的“停止”按钮,记录下这张画用了多少时间。 3. 计算速度 比如,这张画用了0.02秒(20毫秒)完成,那么Unity就算出: 1秒 / 0.02秒 = 50帧,也就是说当前帧率是50 FPS。 4. 重复这个过程 Unity每一帧都这样计时,实时更新帧率。 但动画片播放速度会忽快忽慢怎么办? Unity不会只看一张画的时间,而是会把最近几张画的时间平均一下,算出一个“平滑”的帧率,避免数字跳得太厉害。 总结比喻
这样一来,Unity就能告诉你游戏画面“跑得快不快”,帮你判断游戏是否流畅。 我们继续用这个“动画片播放”的比喻,深入讲讲Unity帧率统计的细节和它背后的“幕后故事”!
1. 帧率统计其实是“秒表不停地开始和停止” 想象Unity是一个超级快的动画导演: 它每次开始画一张画时,按下秒表“开始”。 画完这张画时,按下秒表“停止”,记录这张画用了多少时间。 这个时间就是“这一帧的耗时”。
2. 为什么要用“1秒除以耗时”来算帧率? 如果一张画用了0.1秒,说明1秒钟只能画10张画(1 / 0.1 = 10 FPS)。 如果一张画用了0.01秒,说明1秒钟能画100张画(1 / 0.01 = 100 FPS)。 这就像你用秒表测量跑步速度:跑完一圈用了多少秒,速度就是“1圈/秒数”。
3. 帧率为什么会忽高忽低? 有时候画面复杂,导演画一张画要花更多时间(比如画面里有很多角色、特效)。 有时候画面简单,画一张画很快。 所以每一帧的耗时不一样,帧率也会波动。
4. Unity如何让帧率数字更“好看”? Unity不会只看单帧耗时,而是把最近几帧的耗时平均起来,算出一个“平滑”的帧率。 这就像你跑步时,不是只看某一秒的速度,而是看过去几秒的平均速度,更稳定。
5. 帧率统计的幕后英雄:计时器和主循环 Unity的主循环(游戏循环)就像导演的工作节奏: 先处理游戏逻辑(角色移动、AI等) 再渲染画面(把画面画出来) 计时器记录从一帧开始到结束的时间,包含了所有这些步骤。
6. 为什么帧率统计很重要? 帧率告诉你游戏“跑得快不快”,是游戏流畅度的关键指标。 低帧率意味着画面卡顿,玩家体验差。 高帧率意味着画面流畅,玩家玩得开心。
7. 用代码模拟秒表计时 下面是一个简单的FPS统计脚本,模拟导演的秒表:
总结 Unity帧率统计就像导演用秒表不停地计时每一张动画画面完成的时间,然后算出每秒能播放多少张画面,告诉你动画(游戏)是否流畅。通过平滑处理,帧率数字更稳定,更容易观察和优化。
版权声明:本文为CSDN博主「你一身傲骨怎能输」的原创文章, 遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_33060405/article/details/142796587
- 每一帧画面就像动画片中的一张“画”。
- 你的眼睛看到的动画,是这些一张张画快速连续播放出来的效果。
- “帧率”就是“每秒钟播放了多少张画”。
- 如果动画片每秒播放60张画(60 FPS),看起来就很流畅。
- 如果每秒只播放10张画(10 FPS),动画就会卡顿、跳跃。
Unity是怎么数的呢? 1. 计时器开始计时 Unity在开始画一张画(渲染一帧)的时候,按下秒表的“开始”按钮。 2. 画完这一帧 当这一帧画面渲染完成,Unity按下秒表的“停止”按钮,记录下这张画用了多少时间。 3. 计算速度 比如,这张画用了0.02秒(20毫秒)完成,那么Unity就算出: 1秒 / 0.02秒 = 50帧,也就是说当前帧率是50 FPS。 4. 重复这个过程 Unity每一帧都这样计时,实时更新帧率。 但动画片播放速度会忽快忽慢怎么办? Unity不会只看一张画的时间,而是会把最近几张画的时间平均一下,算出一个“平滑”的帧率,避免数字跳得太厉害。 总结比喻
| Unity帧率统计 | 动画片播放比喻 |
|---|---|
| 每帧计时 | 计时每张动画画面播放时间 |
| 计算1/时间得FPS | 计算每秒播放多少张画面 |
| 平滑处理 | 取最近几张画的平均播放速度,避免忽快忽慢 |
这样一来,Unity就能告诉你游戏画面“跑得快不快”,帮你判断游戏是否流畅。 我们继续用这个“动画片播放”的比喻,深入讲讲Unity帧率统计的细节和它背后的“幕后故事”!
1. 帧率统计其实是“秒表不停地开始和停止” 想象Unity是一个超级快的动画导演: 它每次开始画一张画时,按下秒表“开始”。 画完这张画时,按下秒表“停止”,记录这张画用了多少时间。 这个时间就是“这一帧的耗时”。
2. 为什么要用“1秒除以耗时”来算帧率? 如果一张画用了0.1秒,说明1秒钟只能画10张画(1 / 0.1 = 10 FPS)。 如果一张画用了0.01秒,说明1秒钟能画100张画(1 / 0.01 = 100 FPS)。 这就像你用秒表测量跑步速度:跑完一圈用了多少秒,速度就是“1圈/秒数”。
3. 帧率为什么会忽高忽低? 有时候画面复杂,导演画一张画要花更多时间(比如画面里有很多角色、特效)。 有时候画面简单,画一张画很快。 所以每一帧的耗时不一样,帧率也会波动。
4. Unity如何让帧率数字更“好看”? Unity不会只看单帧耗时,而是把最近几帧的耗时平均起来,算出一个“平滑”的帧率。 这就像你跑步时,不是只看某一秒的速度,而是看过去几秒的平均速度,更稳定。
5. 帧率统计的幕后英雄:计时器和主循环 Unity的主循环(游戏循环)就像导演的工作节奏: 先处理游戏逻辑(角色移动、AI等) 再渲染画面(把画面画出来) 计时器记录从一帧开始到结束的时间,包含了所有这些步骤。
6. 为什么帧率统计很重要? 帧率告诉你游戏“跑得快不快”,是游戏流畅度的关键指标。 低帧率意味着画面卡顿,玩家体验差。 高帧率意味着画面流畅,玩家玩得开心。
7. 用代码模拟秒表计时 下面是一个简单的FPS统计脚本,模拟导演的秒表:
using UnityEngine;
public class FPSCounter : MonoBehaviour
{
float deltaTime = 0.0f;
void Update()
{
// 计算每帧耗时的平滑值
deltaTime += (Time.unscaledDeltaTime - deltaTime) * 0.1f;
}
void OnGUI()
{
// 计算帧率 = 1 / 平滑耗时
float fps = 1.0f / deltaTime;
GUI.Label(new Rect(10, 10, 100, 25), "FPS: " + Mathf.Ceil(fps));
}
}
Time.unscaledDeltaTime 是上一帧耗时(秒),不受时间缩放影响。
通过平滑处理,避免帧率数字跳动太大。
总结 Unity帧率统计就像导演用秒表不停地计时每一张动画画面完成的时间,然后算出每秒能播放多少张画面,告诉你动画(游戏)是否流畅。通过平滑处理,帧率数字更稳定,更容易观察和优化。
版权声明:本文为CSDN博主「你一身傲骨怎能输」的原创文章, 遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_33060405/article/details/142796587





