15.Unity重要组件和API-Time
15.1 知识点
Time相关内容主要用来干啥
时间相关内容主要都在 Time
类里,用于游戏中参与位移、记时、时间暂停等。
时间缩放比例
时间缩放比例主要通过 timeScale
变量控制。
timeScale变量-时间缩放比例
// 时间流逝的标度。可用于慢动作效果。默认等于1
// Time.timeScale = 0; // 时间停止
// Time.timeScale = 1; // 正常速度
// Time.timeScale = 2; // 2倍速
帧间隔时间
普通帧间隔时间在 Update
内使用。
帧间隔时间主要用于计算位移。
- 帧间隔时间:最近的一帧用了多长时间(秒)
- 帧间隔时间主要是用来计算位移
- 路程 = 时间 * 速度
- 根据需求选择参与计算的间隔时间
- 如果希望游戏暂停时就不动的,那就使用
deltaTime
- 如果希望不受暂停影响,使用
unscaledDeltaTime
deltaTime变量 受scale影响的帧间隔时间
// 完成上一帧所用的时间(以秒为单位)(只读)。
// print("帧间隔时间" + Time.deltaTime);
unscaledDeltaTime变量 不受scale影响的帧间隔时间
// 从上一帧到当前帧的独立于 timeScale 的时间间隔(以秒为单位)(只读)。
// print("不受scale影响的帧间隔时间" + Time.unscaledDeltaTime);
timeScale=1的时候unscaledDeltaTime是和deltaTime的值一样的 修改了timeScale deltaTime/unscaledDeltaTime会等于timeScale
// timeScale=1的时候unscaledDeltaTime是和deltaTime的值一样的,修改了timeScale deltaTime/unscaledDeltaTime会等于timeScale
// print($"Time.timeScale:{Time.timeScale}" +
// $" Time.deltaTime:{Time.deltaTime} " +
// $" Time.unscaledDeltaTime:{Time.unscaledDeltaTime}" +
// $" Time.deltaTime/Time.unscaledDeltaTime:{Time.deltaTime / Time.unscaledDeltaTime}" );
// Time.timeScale:1 Time.deltaTime:0.0048229 Time.unscaledDeltaTime:0.0048229 Time.deltaTime / Time.unscaledDeltaTime:1
// Time.timeScale:0 Time.deltaTime:0 Time.unscaledDeltaTime:0.0046655 Time.deltaTime / Time.unscaledDeltaTime:0
// Time.timeScale:2 Time.deltaTime:0.0106202 Time.unscaledDeltaTime:0.0053101 Time.deltaTime / Time.unscaledDeltaTime:2
游戏开始到现在的时间
time变量 受scale影响的单机游戏中计时
// 该帧开始的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。
// print("受scale影响的游戏开始到现在的时间:" + Time.time);
unscaledTime变量 不受scale影响的单机游戏中计时
// 该帧的独立于 timeScale 的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。
// print("不受scale影响的游戏开始到现在的时间:" + Time.unscaledTime);
timeScale=1的时候unscaledTime是和time的值一样的 修改了timeScale time/unscaledTime会等于timeScale
物理帧间隔时间
物理帧间隔时间在 FixedUpdate
内使用。
fixedDeltaTime变量 受scale影响的物理帧间隔时间
// 执行物理和其他固定帧率更新(如 MonoBehaviour 的 FixedUpdate)的时间间隔(以秒为单位)0。
// print(Time.fixedDeltaTime);
fixedUnscaledDeltaTime变量 不受scale影响的物理帧间隔时间
// 从上一个固定帧到当前固定帧的独立于 timeScale 的时间间隔(以秒为单位)(只读)。
// print(Time.fixedUnscaledDeltaTime);
timeScale=1的时候fixedUnscaledDeltaTime是和fixedDeltaTime的值一样的 修改了timeScale fixedDeltaTime/fixedUnscaledDeltaTime会等于timeScale
帧数
frameCount变量 从开始到现在游戏跑了多少帧(次循环)
// 已经过的总帧数(只读)。
// print(Time.frameCount);
总结
Time相关的内容主要包括:
- 帧间隔时间:用于计算位移相关内容。
- 时间缩放比例:用来暂停或者倍速等等。
- 帧数(帧同步)。
15.2 知识点代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson15_时间相关Time : MonoBehaviour
{
void Update()
{
#region Time相关内容主要用来干啥
//时间相关内容 主要都在Time类里 用于游戏中参与位移、记时、时间暂停等
#endregion
#region 知识点一 时间缩放比例
//timeScale变量
//时间流逝的标度。可用于慢动作效果。默认等于1
//Time.timeScale = 0;//时间停止
Time.timeScale = 1;//正常速度
//Time.timeScale = 2;//2倍速
#endregion
#region 知识点二 帧间隔时间
//帧间隔时间:最近的一帧 用了多长时间(秒)
//帧间隔时间 主要是用来计算位移
//路程 = 时间*速度
//根据需求 选择参与计算的间隔时间
//如果希望 游戏暂停时就不动的 那就使用deltaTime
//如果希望 不受暂停影响 unscaledDeltaTime
//deltaTime变量 受scale影响的帧间隔时间
//完成上一帧所用的时间(以秒为单位)(只读)。
//print("帧间隔时间" + Time.deltaTime);
//打印的结果每一帧都不一样的 Unity会能跑多快就多快
//unscaledDeltaTime变量 不受scale影响的帧间隔时间
//从上一帧到当前帧的独立于 timeScale 的时间间隔(以秒为单位)(只读)。
//print("不受scale影响的帧间隔时间" + Time.unscaledDeltaTime);
//timeScale=1的时候unscaledDeltaTime是和deltaTime的值一样的 修改了timeScale deltaTime/unscaledDeltaTime会等于timeScale
//print($"Time.timeScale:{Time.timeScale}" +
// $" Time.deltaTime:{Time.deltaTime} " +
// $" Time.unscaledDeltaTime:{Time.unscaledDeltaTime}" +
// $" Time.deltaTime/Time.unscaledDeltaTime:{Time.deltaTime / Time.unscaledDeltaTime}" );
//Time.timeScale:1 Time.deltaTime:0.0048229 Time.unscaledDeltaTime:0.0048229 Time.deltaTime / Time.unscaledDeltaTime:1
//Time.timeScale:0 Time.deltaTime:0 Time.unscaledDeltaTime:0.0046655 Time.deltaTime / Time.unscaledDeltaTime:0
//Time.timeScale:2 Time.deltaTime:0.0106202 Time.unscaledDeltaTime:0.0053101 Time.deltaTime / Time.unscaledDeltaTime:2
#endregion
#region 知识点三 游戏开始到现在的时间
//time变量 受scale影响的单机游戏中计时
//该帧开始的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。
//print("受scale影响的游戏开始到现在的时间:" + Time.time);
//unscaledTime变量 不受scale影响的单机游戏中计时
//该帧的独立于 timeScale 的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。
//print("不受scale影响的游戏开始到现在的时间:" + Time.unscaledTime);
//timeScale=1的时候unscaledTime是和time的值一样的 修改了timeScale time/unscaledTime会等于timeScale
#endregion
#region 知识点四 物理帧间隔时间
#endregion
#region 知识点五 帧数
//frameCount变量 从开始到现在游戏跑了多少帧(次循环)
//已经过的总帧数(只读)。
//print(Time.frameCount);
#endregion
}
private void FixedUpdate()
{
#region 知识点四 物理帧间隔时间
//FixedUpdate内
//fixedDeltaTime变量 受scale影响的物理帧间隔时间
//执行物理和其他固定帧率更新(如 MonoBehaviour 的 FixedUpdate)的时间间隔(以秒为单位)0。
//print(Time.fixedDeltaTime);
//打印的结果每一物理帧都一样的 可以在ProjectSetting中的Time里设置
//fixedUnscaledDeltaTime变量 不受scale影响的物理帧间隔时间
//从上一个固定帧到当前固定帧的独立于 timeScale 的时间间隔(以秒为单位)(只读)。
//print(Time.fixedUnscaledDeltaTime);
//timeScale=1的时候fixedUnscaledDeltaTime是和fixedDeltaTime的值一样的 修改了timeScale fixedDeltaTime/fixedUnscaledDeltaTime会等于timeScale
#endregion
}
//总结
//Time相关的内容
//1.帧间隔时间 就用计算位移相关内容
//2.时间缩放比例 用来暂停 或者倍速等等
//3.帧数(帧同步)
}
15.3 练习题
在哪里可以设置物理更新的间隔时间?
可以在Project Setting中的Time里设置
请问Time中的各个时间对于我们来说,可以用来做什么?至少选择两个时间变量来进行说明
Time.timeScale
- 时间缩放比例
- 时间的暂停
- 时间倍速
- 如果想要恢复正常 设置为1即可
Time.deltaTime
- 用于计算位移的帧间隔时间
- 路程=速度*时间
Time.frameCount
- 帧数 计算从游戏开始到现在跑了几次循环
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com