当前位置:   article > 正文

UnityAPI——Time类中的静态变量Time.deltaTime_time.deltatime api

time.deltatime api

UnityAPI官方文档

Unity3d - Time.deltaTime

Update():每帧被调用一次。

FixedUpdate():每隔Time.fixedDeltaTime被调用一次。Time.fixedDeltaTime默认是0.02s,可以通过Edit->ProjectSettings->Time来设置。

在游戏中,因为受场景渲染的复杂程度,还有输入的一系列事件等等各种原因影响,游戏画面的帧率是在不断变化的。

所以,在控制游戏逻辑的过程中,一般是需要按照每帧去处理的(使用Update())。而物理相关的处理,则需要根据时间的变化去处理(使用FixedUpdate())。

而当我们在Update()中,希望通过每隔一段时间去执行一些逻辑,比如修改GameObject的Transform,需要使用Time.deltaTime。
主要原因,就是帧率在不断变化,Update()被调用的时间并不是线性的。
在Update()中,时间轴上,渲染出的5帧画面Frame_1~Frame_5,以及每帧的时间间隔t1~t4:
这里写图片描述
Transform的Translate方法接受的参数,实际上是一个位移,而不是速度。
在FixedUpdate()中,发生的情况是这样的:
这里写图片描述
因为FixedUpdate()的调用间隔就是0.02s=t1=t2=t3=t4,所以实际上,位移=速度*时间。

由于Update()并不是按照单位时间被调用的,所以要乘以每次的“帧间时间”,而这个时间就是Time.deltaTime。这样的操作相当于一个“补偿”,将每次帧率的变化,通过时间的变化同步体现到执行逻辑上。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class API02Time : MonoBehaviour {

    public Transform cube;
    public int runcount=10000;
    void Start () {
    //Time.realtimeSinceStartup用于性能测试
        float time1 = Time.realtimeSinceStartup;
        for (int i = 0; i < runcount; i++)
        {
            method1();
        }
        float time2 = Time.realtimeSinceStartup;
        Debug.Log(time1-time2);
        float time3 = Time.realtimeSinceStartup;
        for (int i = 0; i < runcount; i++)
        {
            method2();
        }
        float time4 = Time.realtimeSinceStartup;
        Debug.Log(time4 - time3);

    }
    void Update () {
            cube.Translate(Vector3.forward*Time.deltaTime);
            Time.timeScale = 0.5f;
    }
    void method1()
    {
        int i = 1 + 2;
    }
    void method2()
    {
        int i = 1 * 3;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/108268
推荐阅读
相关标签
  

闽ICP备14008679号