一,概述
Time是unity中获取当前的系统时间的类,提供了从unity获取相关时间信息的接口.通过Time的相关时间信息接口,我们可以在程序中实现对时间相关的操作.
二,类变量(Class Variables)
1>time从游戏开始(程序开始运行的那一刻)到到现在所用的时间(.time调用的那一刻) (只读)。
2>timeSinceLevelLoad
表示从当前Scene开始到目前为止的时间,也会随着暂停操作而停止 (只读)。
示例: "player" 是下一场景的某个组件的脚本.程序刚运行时处在上一场景.通过上一场景,跳转到下一场景.验证TimeSinceLevel 和time接口.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class player : MonoBehaviour {
public float speed = 90;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.Rotate(Vector3.up* Time.deltaTime *speed);
}
public void ChangeSpeed (float speedNew)
{
Debug.Log ("TimeSinceLevel" + Time.timeSinceLevelLoad);
Debug.Log ("Time" + Time.time);
this.speed = speedNew;
}
}
打印:
3>deltaTime
表示从上一帧到当前帧时间,以秒为单位(只读)。
因为void Update () 或void FixedUpdate() 是以每帧进行刷新的. 如果想要一个值根据每帧的变化而变化(增加或减少) ,你应该使用 Time.deltaTime来
乘以这个值。这样才能使得变化的效果依赖于单位时间,而不是帧频。这样运动的效果更符合现实。
void Update () {
}
4>fixedTime表示FixedUpdate已经执行的时间。
5>fixedDeltaTime
表示以秒计间隔,在物理和其他固定帧率进行更新 (像MonoBehaviour的FixedUpdate),在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置
6>maximumDeltaTime
表示一帧能获得的最长时间。物理和其他固定帧速率更新(类似MonoBehaviour FixedUpdate)。
7>smoothDeltaTime
表示一个平稳的deltaTime,根据前 N帧的时间加权平均的值(只读)。
8> timeScale
时间缩放,默认值为1。若设置<1,表示时间减慢;若设置>1,表示时间加快;若设置=0,则游戏暂停。可以用来加速、减速和暂停游戏,非常有用。
9>frameCount
已经传递的帧的总数(只读)。
10>realtimeSinceStartup
表示自游戏开始后的总时间,即使暂停也会不断的增加(只读)。
11>captureFramerate
如果captureFramerate设置比0大的值,时间会在每帧 (1.0 / captureFramerate) 前进,不考虑真实时间。
12>unscaledDeltaTime
不考虑timescale时候与deltaTime相同,若timescale被设置,则无效(只读)。
13>unscaledTime
不考虑timescale时候与time相同,若timescale被设置,则无效 (只读)。