Unity笔记-02

Unity笔记-02

Time

代码:Time.time 项目从开始到现在的运行时间,会受到时间缩放影响,只读

代码:Time.unscaledTime 项目才开始到现在的运行时间,不会受到时间缩放的影响,只读

代码:Time.realtimeSinceStartup 项目从开始到现在的真正的运行时间,排除卡顿影响的时间,不会受到时间缩放的影响,只读

代码:Time.deltaTime 渲染帧的时间,也就是每一帧的时间,不同性能的硬件会对渲染效率造成影响,性能越差,每帧的渲染时间就越长,反之越短。会受到时间缩放的影响,只读

代码:Time.timeScale 设置时间缩放比例,默认为1,如果赋值0,那么时间停止。

Update方法,每渲染帧更新,Update受渲染影响,也就是硬件性能影响,不受时间缩放影响

FixUpdate方法,固定时间执行,与渲染无关,受时间缩放影响

代码块:

 public void Update()
    {
        this.transform.Rotate(0, speed * Time.deltaTime,0);//恒定每秒转速
        //个别不受时停影响的设置方法
        this.transform.Rotate(0, speed * Time.unscaledDeltaTime,0);
        //unscaleDeltaTime表示不受时间缩放影响的渲染帧时间间隔
        //旋转速度乘以每帧消耗时间,保证旋转/移动速度不受机器性能以及渲染性能影响
    }

由于不同硬件性能不同,渲染帧消耗的时间不同,Update的更新频率也不同,预要实现恒定每秒转速,那么需要设置恒定转速,就需要达到:越短的渲染帧旋转角度越小,越长的渲染帧旋转角度越大,以此达到平衡。并且可以通过设置Time.deltaTime的值对物体进行时间缩放,比如制作特写镜头或者时间停止。如果需要使得个别物体不受时间停止的影响,那么需要使用Time.unscaledDeltaTime

倒计时功能的实现

代码块-1

private void Timer1()
    {
        if (Time.time >= nextTime)
        {
            if (time == 0)
            {
                nextTime = 0;
            }
            else
            {
                text.text = string.Format("{0:d2}:{1:d2}", time / 60, time % 60);
                time--;
                nextTime++;
            }
        }
    }

预先设置下一次执行的时间,并不断检测每一次的项目运行时间,每次执行后更新下一次执行时间,已达到每秒运行一次的效果,也可以通过设置nextTime的变化已达到每次更新时间都不同的效果,例如缓动

该方法适合立即响应的操作,例如:鼠标按下即可发射子弹,通过时间设置每间隔多少时间发射一颗子弹

代码块-2

  private void Timer2()
    {
        totalTime += Time.deltaTime;
        if (totalTime >= 1)
        {
            time--;
            text.text = string.Format("{0:d2}:{1:d2}", time / 60, time % 60);
            totalTime = 0;
        }
    }

每渲染帧更新,不断累加渲染帧的总和,如果达到1那么便执行,执行后重置总和。也可以通过设置nextTime的变化已达到每次更新时间都不同的效果,例如缓动

该方法适合具有延时性的操作,例如:鼠标按下达到目的后但需等待一段时间在执行的行为

代码块-3

InvokeRepeating("方法名", 5, 1);
CancelInvoke("方法名");//停止执行

通过InvokeRepeating()方法,第一个参数为执行方法的名称,第二个参数为开始执行的时间,第三个参数为执行间隔

该方法较为简单,但是局限性较大,间隔时间固定,无法做到像前两种可以自由控制固定时间的方法,相较于第三种方法,前两种方法较为灵活

代码:Invoke("方法名",开始调用时间) 可以用于设置延时但只调用一次的方法,一般放在Start()方法里

预制件 :Prefab

一种资源类型,可以作为模版在多个场景里创造实例,如果更改预制件那么实例也会发生改变,其中注意一点:如果对实例的某一属性进行单独改变,那么这个属性栏会被加粗,表示这是这个实例独立的元素,此时如果不使用Apply同步到预制件,即使改变预制件的这一属性,这一实例的这一属性也不再发生变化

Apply:将某一实例的修改同步到预制件

Select:通过预制件实例选择对应的预制件

Revert:放弃实例的属性值,还原为预制件的属性值

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值