初面网初面网

时间

时间相关API

  • Time.deltaTime:上一帧到当前帧的时间间隔(秒)
  • Time.fixedDeltaTime:固定时间步长(秒),默认值为0.02秒
  • Time.time:自游戏开始以来的时间(秒)
  • Time.realtimeSinceStartup:自游戏开始以来的时间(秒),不受时间缩放影响
  • Time.smoothDeltaTime:平滑后的时间间隔(秒),基于上一帧到当前帧的时间间隔和上一帧到上一帧的时间间隔计算得出
  • Time.unscaledDeltaTime:上一帧到当前帧的时间间隔(秒),不受时间缩放影响
  • Time.unscaledTime:自游戏开始以来的时间(秒),不受时间缩放影响
  • Time.timeSinceLevelLoad:自当前场景加载以来的时间(秒)
  • Time.timeScale:时间缩放因子,默认值为1.0

timeScale原理

基本概念

Time.timeScale 是 Unity 中的时间缩放因子,默认值为 1.0,表示游戏按照正常速度运行。当 timeScale 大于 1.0 时,游戏速度会加快;当 timeScale 小于 1.0 时,游戏速度会减慢;当 timeScale 等于 0 时,游戏会暂停。

工作原理

timeScale 主要影响以下几个方面:

  1. 物理模拟:通过影响 Time.fixedDeltaTime 来改变物理更新的频率和速度。当 timeScale 为 0.5 时,物理更新的速度会减半。

  2. 动画播放:动画的播放速度会受到 timeScale 的影响,当 timeScale 为 0.5 时,动画播放速度会减半。

  3. 时间相关 APITime.deltaTimeTime.time 等会受到 timeScale 的影响,而 Time.unscaledDeltaTimeTime.unscaledTimeTime.realtimeSinceStartup 等则不受 timeScale 的影响。

对不同时间 API 的影响

API是否受 timeScale 影响说明
Time.deltaTime上一帧到当前帧的时间间隔,会被 timeScale 缩放
Time.fixedDeltaTime固定时间步长,会被 timeScale 缩放
Time.time自游戏开始以来的时间,会被 timeScale 缩放
Time.realtimeSinceStartup自游戏开始以来的实际时间,不受 timeScale 影响
Time.smoothDeltaTime平滑后的时间间隔,会被 timeScale 缩放
Time.unscaledDeltaTime上一帧到当前帧的实际时间间隔,不受 timeScale 影响
Time.unscaledTime自游戏开始以来的实际时间,不受 timeScale 影响

应用场景

  1. 慢动作效果:将 timeScale 设置为小于 1.0 的值,如 0.5,可以实现慢动作效果。

  2. 暂停游戏:将 timeScale 设置为 0,可以实现游戏暂停效果。

  3. 加速游戏:将 timeScale 设置为大于 1.0 的值,如 2.0,可以实现游戏加速效果。

  4. 时间控制:在某些游戏场景中,需要控制时间的流逝速度,如时间挑战模式。

注意事项

  1. 输入处理:当 timeScale 为 0 时,游戏会暂停,但输入仍然会被处理。因此,在实现暂停功能时,需要额外处理输入。

  2. 音频timeScale 不会影响音频的播放速度,需要单独处理音频的速度控制。

  3. 网络同步:在多人游戏中,timeScale 的使用需要考虑网络同步问题,确保所有客户端的游戏速度一致。

  4. 性能:改变 timeScale 可能会影响游戏的性能,特别是当 timeScale 较大时,物理计算的频率会增加,可能导致性能下降。

  5. 时间相关计算:在进行时间相关的计算时,需要注意区分使用受 timeScale 影响的 API 和不受影响的 API,根据具体需求选择合适的 API。

更新于 2026/2/26