Time类

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

public class NewBehaviourScript : MonoBehaviour
{
    public float speed = 10;
    public float deltaTime, time;
    private void Update()
    {
        //本帧时间  -   上一帧时间
        //上一帧消耗时间
        deltaTime = Time.deltaTime;
        time = Time.time;
        //该帧开始的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。

        //Time.time 是应用程序已运行的时间(以秒为单位)。它是只读的。

        //应用程序在每帧开始时接收当前的 Time.time,该值按帧递增。每个帧的 time 调用将接收相同的值。在从 FixedUpdate 中调用时,将返回 Time.fixedTime 属性。

        //应避免常规的(每帧)调用:Time.time 倾向于提供应用程序已经运行的时间长度,而不是每帧的时间。




        //机器性能差/渲染量大    每帧执行间隔大   每秒渲染次数少(Update执行次数少)  希望 每次多旋转
        //机器性能好/渲染量小    每帧执行间隔小   每秒渲染次数多(Update执行次数多)  希望 每次少旋转

        //每帧沿Y轴旋转1度
        transform.Rotate(0, 1, 0);

        //如果Update执行次数少  那么deltaTime数值大
        //                 多                    小
        //总结:如果在Update中对物体做物理操作(移动/旋转/力)
        //需要在速度上 乘以 每帧消耗时间,用以得到恒定的速度。
        transform.Rotate(0, speed * Time.deltaTime, 0);


    }
}



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

public class NewBehaviourScript : MonoBehaviour
{
 public float speed = 10;
    
    private void FixedUpdate()
    {  //与Time.deltaTime无关
        transform.Rotate(0, speed * Time.deltaTime, 0);
    }


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

public class NewBehaviourScript1 : MonoBehaviour
{
    public float speed = 10;
    private void OnGUI()
    {
        if (GUILayout.Button("游戏暂停"))
        {
            Time.timeScale = 0;
        }
        if (GUILayout.Button("游戏继续"))
        {
            Time.timeScale = 1;
        }
        if (GUILayout.Button("慢动作"))
        {
            Time.timeScale = 0.1f;
        }
        /*
         Time.timeScale 
         不影响渲染  所以 Update 执行间隔不受影响
         影响物理更新 所以FidexUpdate执行间隔受间隔
         Time.deltaTime  受影响
         */
    }
    public float deltaTime, unscaledDeltaTime, time, unscaledTime,c;
    private void Update()
    {    //游戏暂停后,受影响
        unscaledDeltaTime = Time.unscaledDeltaTime;      
        c = Time.realtimeSinceStartup;
        unscaledTime = Time.unscaledTime;
        //游戏暂停后,受影响
        deltaTime = Time.deltaTime;
        time = Time.time;

        //如果希望游戏暂停后,当前物体不受影响
        transform.Rotate(0, speed * Time.unscaledDeltaTime, 0);
    }

    private void FixedUpdate()
    {   //游戏暂停后,受影响
        //transform.Rotate(0, speed * Time.deltaTime, 0);
    }

}

Time类

从Unity获取时间信息的接口

常用属性

time :从游戏开始到现在所用时间。

timeScale :时间缩放。

deltaTime :以秒为单位,表示每帧的经过时间。

unscaledDeltaTime :不受缩放影响的每帧经过时间。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值