Time.timeScale 表示游戏时间对物理时间的缩放比例,用于控制物理引擎运动和动画的速度。等于0时可以实现游戏暂停功能。
Time.deltaTime,,Time.time,Time.fixedDeltatime ,Time.fixedTime 都是被Time.timeScale缩放物理时间后的游戏时间。
可以在Eidt - >Project Settings - Times 或者代码中 修改 timeScale 和 fixedDeltatime
比如Time.timeScale = 2的话,可以这样理解 ,现在Time.fixedTime = (原来Time.fixedTime) * 2 ,那么Time.time的增长速度也会变成2倍速度,就是物理时间的一秒相当于游戏世界中的两秒。
Time.time是从程序开始执行到游戏时间,Time.deltaTime上一帧完成的游戏时间,Time.fixedTime表示FixedUpdate已经执行游戏时间,而Time.fixedDeltatime是一个固定的游戏时间增量。除了fixedDeltatime其他3个值都是只读的,可以通过fixedDeltatime来改变FixedUpdate的跟新速率。
Time.realtimeSinceStartup 游戏开始执行的现在的物理时间。
Time.timeScale越大,Time.deltaTime越大 ,Time.time增长速度越快,FixedUpdate执行间隔的物理时间越短。以保证每fixedDeltatime游戏时间执行一次FixedUpdate。反之亦然。
改变Time.timeScale, fixedDeltatime 不改变,Update执行间隔的物理时间不改变。Update速度与fps有关。在每帧执行以后一定会执行Update方法。
void Update () {
Debug.Log("在Update中执行");
Debug.Log("time:"+Time.time);
Debug.Log("deltatime"+Time.deltaTime);
Debug.Log("fixedtime:"+Time.fixedTime);
Debug.Log("fixedDeltatimetime:" + Time.fixedDeltaTime);
}
void FixedUpdate()
{
Debug.Log("在fixedUpdate中执行");
Debug.Log("time:" + Time.time);
Debug.Log("deltatime" + Time.deltaTime);
Debug.Log("fixedtime:" + Time.fixedTime);
Debug.Log("fixedDeltatimetime:" + Time.fixedDeltaTime);
}