常用的两种时间:
一、Unity内和游戏相关的时间 ----- Time
二、和本地时间、日期格式化等相关的C#类时间 ---- DateTime
一:Unity内和游戏相关的时间 ----- Time
Time类:从 Unity 获取时间信息的接口。
一些常用方法:
Time.time : 自游戏启动以来的时间(以秒为单位),受Time.timeScale影响,因此也叫游戏时间(Time.timeScale = 0时,改时间会暂停计时)。
Time.unscaledTime:自游戏启动以来的时间(以秒为单位)。不受 timeScale 的影响,因此也叫真实时间(Time.timeScale = 0时,不会暂停计时)。
Time.realtimeSinceStartup:返回自启动以来的时间,不受 Time.timeScale 的影响,因此也叫真实时间。
*注意:*Time.unscaledTime是从start()之后开始启动,而Time.realtimeSinceStartup从Awake()时开始计时。
Time.deltaTime:当前帧和上一帧之间的时间,也称两帧之间的时间间隔。受Time.timeScale影响。
Time.unscaledDeltaTime:当前帧和上一帧之间的时间,也称两帧之间的时间间隔。不受Time.timeScale影响。
Time.smoothDeltaTime:经过平滑处理的 Time.deltaTime,受Time.timeScale影响。
Time.fixedTime: 表示FixedUpdate已经执行的时间
Time.fixedUnscaledTime: 表示FixedUpdate已经执行的时间,该值不受 timeScale 的影响。
Time.fixedDeltaTime:执行物理和其他固定帧率更新(如 MonoBehaviour 的 FixedUpdate)的时间间隔(以秒为单位)。不受 timeScale 影响。
Time.fixedUnscaledDeltaTime:从上一个固定帧到当前固定帧的独立于 timeScale 的时间间隔(以秒为单位)(只读)。与 fixedDeltaTime 不同,受 timeScale 的影响。会按照反比改变。
Time.frameCount:已经过的总帧数
Time.timeScale:时间流逝的标度。
注意:当 timeScale 为 1.0 时,时间流逝的速度与实时一样快。 当 timeScale 为 0.5 时,时间流逝的速度比实时慢 2x。
当 timeScale 设置为 0 时,如果您的所有函数都是独立于帧率的(都受timeScale影响), 则游戏基本上处于暂停状态。
当 timeScale 设置为 0 时,会调用 Update、LateUpdate 函数,而不会调用 FixedUpdate 函数。
总结:
1、受 TimeScale 影响的有:time、deltaTime、fixedTime、fixedUnscaledDeltaTime、smoothDeltaTime。
2、不受 TimeScale 影响的有:realtimeSinceStartup、unscaledTime、unscaledDeltaTime、fixedUnscaledTime、fixedDeltaTime。
3、Update和LateUpdate不受TimeScale 影响,但是FixedUpdate受TimeScale 的影响。当TimeScale = 0 时,FixedUpdate也停止更新,fixedUnscaledTime也停止,fixedUnscaledDeltaTime的值不会发生改变。
4、TimeScale 是 0~100之间的浮点数
二:和本地时间、日期格式化等相关的C#类时间 ---- DateTime
C# 的 DataTime:表示某个时刻,通常以日期和当天的时间表示。
以下是常用函数实例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System; //需要引入命名空间
public