unity的Time类

Time.time 游戏开始后累计时间
Time.timeScale 时间缩放
Time.deltaTime 上一帧渲染时间
Time.unscaledDeltaTime不受影响的上一帧渲染时间

Time.timeScale 
不影响渲染  所以 Update 执行间隔不受影响
影响物理更新 所以FidexUpdate执行间隔受间隔
Time.deltaTime  受影响
Time.timeScale = 0;  //暂停游戏
Time.timeScale = 1; //正常游戏
Time.timeScale = 0.1f;//慢动作

public float deltaTime, unscaledDeltaTime, time, unscaledTime;
 //本帧时间  -   上一帧时间
 //上一帧消耗时间
 deltaTime = Time.deltaTime;
 unscaledDeltaTime = Time.unscaledDeltaTime;
 time = Time.time;
unscaledTime = Time.unscaledTime;

//如果Update执行次数少  那么deltaTime数值大
//总结:如果在Update中对物体做物理操作(移动/旋转/力)

//需要在速度上 乘以 每帧消耗时间,用以得到恒定的速度。
//transform.Rotate(0, speed * Time.deltaTime, 0);

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

实现倒计时器和控制时间间隔执行操作
方式一:适用场合------固定重复时间调用

    private void Start()
    {
        txtTimer = GetComponent<Text>();
        //重复调用(要执行的方法名称,开始调用时间,调用间隔)
        InvokeRepeating("Timer", 1, 1); 
        //延迟调用
        //Invoke("需要调用的方法名称", 调用时间);
    }
   
    //Time.deltaTime 实现
    //试用场合:。
    private float totalTime = 0;
    //InvokeRepeating 实现
    //试用场合:计时器。每间隔固定时间 执行1次
    private void Time1()
    {
        second--;//119       1:59 
        txtTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);

        if (second <= 0)
            CancelInvoke("Timer");//取消调用
    }

方式二:适用场合----沿多个路点移动,到达目标等待一段时间

private int second =120;
private  float totalTime =0;
   private void Timer2()
    {
        //累加每帧消耗时间
        totalTime += Time.deltaTime;
        //如果1s
        if (totalTime>=1)
        {
            second--;//119       1:59 
            txtTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
            totalTime = 0;//清空累加的时间
        }
    }

方式三: 适用场合-----发射子弹

private int second =120;
private float nextTime=1;
    //Time.time 实现
   
    private void Timer3()
    {
        //如果时间到了 
        if (nextTime <= Time.time)
        {
            second--;//119       1:59 
            txtTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
            nextTime = Time.time + 1;//在当前时间上增加1s

            if (second <= 10) txtTimer.color = Color.red;
            if (second <= 0) enabled = false;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值