void Update ( ) 更新 
void FixedUpdate ( ) 固定更新

相同点:当MonoBehaviour启用时,其在每一帧被调用,都是用来更新的。 
异同点:第一点不同: 
Update()每一帧的时间不固定,即第一帧与第二帧的时间间隔t1和第三帧与第四帧的时间间隔t2不一定相同。比如:

代码片段:

    using UnityEngine;using System.Collections;public class TestScript : MonoBehaviour{int i = 0;float time = 0f;void Update () {i ++;time = Time.deltaTime;Debug.Log("这是第" + i + "帧");Debug.Log("时间为:" + time);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

这里t1 = 0.04 - 0.02 = 0.02;t2 = 0.55 - 0.35 = 0.2;大约相差了十倍。而如果使用FixedUpdate()会出现什么情况?

代码片段:

    using UnityEngine;using System.Collections;public class TestScript : MonoBehaviour{int i = 0;float time = 0f;void FixedUpdate () {i ++;time = Time.deltaTime;Debug.Log("这是第" + i + "帧");Debug.Log("时间为:" + time);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

我们很清楚地看到t1 = t2 = 0.02。也就是说,FixedUpdate()每帧与每帧之间相差的时间是固定的,而Update()不是固定的。 
第二点不同: 
Update受当前渲染的物体影响,这与当前场景中正在被渲染的物体有关(比如人物的面数,个数等),有时快有时慢,帧率会变化,Update被调用的时间间隔就会发生变化。但是FixedUpdate则不受帧率的变化影响,它是以固定的时间间隔来被调用。 
在官网文档中也提到说: 处理Rigidbody时,需要用FixedUpdate代替Update。例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧。(两者帧长不同)。正是因为FixedUpdate是以固定的时间间隔来被调用,所以人物运动起来比较平滑(运动起来不会有忽快忽慢的感觉,像是跳帧似的),这也就是为什么处理Rigidbody时要用FixedUpdate了(当然还有其他一些原因)。FixedUpdate是以固定的时间间隔来被调用的,而这个固定的时间是可以修改的。 
Edit->Project Setting->time 下的Fixed timestep。 
 
这里是0.02;与上面做的实验t1 = t2 = 0.02一致

void Update ( ) 更新 void FixedUpdate ( )相关推荐

  1. linux update更新源

    类似于windows的自动更新,linux也有相应的更新方式. 更新命令: $sudo apt-get update  #更新 $sudo apt-get upgrade  #升级,需要用update ...

  2. windows update更新时出现错误代码 8024200D解决方法(转)

    windows update更新时出现错误代码 8024200D解决方法(转) 参考文章: (1)windows update更新时出现错误代码 8024200D解决方法(转) (2)https:// ...

  3. 有关ubuntu16.04进行sudo apt-get update更新时出现:‘。。。N: 无法安全地用该源进行更新,所以默认禁用该源。。。’等问题解决方案

    有关ubuntu16.04进行sudo apt-get update更新时出现:'...N: 无法安全地用该源进行更新,所以默认禁用该源...'等问题解决方案 参考文章: (1)有关ubuntu16. ...

  4. mysql怎么升级_MySQL UPDATE 更新

    MySQL UPDATE 更新 如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQ ...

  5. win7更新错误0x800b0109_Win7系统Windows update更新出现错误代码800b0101怎么办

    有不少win7系统用户在进行Windows update更新的时候,总是会遇到各种各样的错误,比如有win7系统用户在更新的时候,出现错误代码800b0101,导致更新失败,该怎么解决这样的问题呢?现 ...

  6. CentOS\fedora使用yum update更新时不升级内核的方法

    2019独角兽企业重金招聘Python工程师标准>>> 引言: 由于系统与硬件的兼容性问题,有可能升级内核后导致服务器不能正常启动,这是非常可怕的,没有特别的需要,建议不要随意升级内 ...

  7. void类型和void *的用法

    转自:https://blog.csdn.net/wang13342322203/article/details/85338677 C语言中的void和void *总结 1.void的作用 c语言中, ...

  8. windows update更新失败 安全模式进不去

    今天一同事的电脑遇到问题了,提示"windows update更新失败".最后一次正确配置不行, 安全模式进不去. 解决方法:强制关机开机后F8启动修复模式(系统盘或者pe进入也可 ...

  9. error C2440 “static_cast” 无法从“void (__thiscall CPppView )(void)”转换为“LRESULT (__thiscall

    error C2440 "static_cast" 无法从"void (__thiscall CPppView )(void)"转换为"LRESULT ...

最新文章

  1. 这十大科学文献最烂配图,你可千万别学
  2. BZOJ1800 [Ahoi2009]fly 飞行棋 其他
  3. 采购订单交货容差限制
  4. java学习(137):java异常初识
  5. 挤拥城市游戏android,拥挤城市crowdcity
  6. 一个标准的REST API测试代码
  7. Bailian2928 POJ NOI0113-05 素数回文数的个数【数论】
  8. 电脑课堂:U盘“无法停止通用卷设备时”的解决方法
  9. go语言项目如何引用依赖Github上的开源项目
  10. Juno: 字体缩放
  11. 2021年下半年信息安全工程师下午真题及答案解析
  12. eclipse安装SVN插件(2020最新,亲测可用)
  13. LM358芯片中文资料(搬运)
  14. PHP 获取图片信息exif
  15. excel转置怎么操作_Excel拆分文本,想怎么拆就怎么拆,简单易学,一看就会
  16. 归纳法、演绎法、数学归纳法之间的关系
  17. ArcGIS之栅格地图配准
  18. LoRaWAN协议入网方式
  19. [转]高精度乘法计算
  20. 吴军长文讲解算力:全球算力竞争中我们要做的三件事

热门文章

  1. Swing 学习小记
  2. mysql 密码长度约束_MySQL简单操作【1、在cmd下MySQL的运行及简单增删改查】
  3. javascript 排序_JavaScript中的排序方法
  4. java调用 solr集群_Solr集群安装Version5.5.2(cloud模式)
  5. uva 1203—— Argus
  6. go语言扫描四位数可用域名
  7. 面试--输入一堆随机数(0-1000),这里面会有重复的数字,把他们去除掉。然后由大到小排列。
  8. Qt中的四种信号与槽的连接方式
  9. linux设置时间快1小时,LINUX CentOS系统时间与现在时间相差8小时解决方法
  10. Volatile的陷阱