对Unity中Time.deltaTime的一点理解

在Unity中,Update()每帧执行,Time.deltaTime表示完成上一帧的时间。使用Time.deltaTime可以使物体运动不受帧率影响,确保不同配置电脑的相同位移效果。通过1s内的deltaTime之和恒定,实现1s移动距离的统一,解决因帧率变化导致的游戏体验差异问题。不需要在FixedUpdate()中处理,因为它固定间隔更新,不适合处理与时间相关的平滑运动。
摘要由CSDN通过智能技术生成

  Update() 方法每帧执行一次

  如果要在Update里面写物体运动等代码,假设认为物体每秒运动30m,且当前每秒为60帧,那么每秒就会调用Update方法60次(一帧调一次),所以理所当然的认为,Update里面应该写着

 private void Update()
    {
        this.transform.Translate(0, 0, 30/60);
    }

  这样做的问题就是,如果别人的机器比较慢,导致每秒只能渲染50帧,那么1s就只会调用Update方法50次,那么他一秒钟就只能走50*30/60=25m

  这样就会导致电脑好的玩家玩游戏时走得快,电脑坏的走得慢。这波啊,这波是硬件压制。但是游戏公司也要赚电脑慢的人的钱,所以不能让它们在这方面被硬件限制(误)。

  而且自己电脑卡的时候走的就慢,不卡的时候走的又快了。极端点,如果电脑帧数波动很大,那么速度一下快一下慢也是很折磨的。

  那么问题就变成了,如何调整Update,可以使得1s内不同帧数的机器可以实现相同的位移(旋转等),即如何让移动不受机器硬件的影响。

  Time.deltaTime就出现了,它指的是完成上一帧的时间,记住它是时间,假设把1s划分成多个帧,图如下。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值