首页  |  网络数码 |  编程技术 |  科技杂谈 |  基本常识 |  软件下载 |  视频素材 |  软件教程
Unity中Update,FixedUpdate,LateUpdate的区别
  2022/5/28 22:44:03
  Unity中Update,FixedUpdate,LateUpdate的区别
  void FixedUpdate () 固定更新
  void Update ()   更新
  void LateUpdate() 晚于更新

  FixedUpdate () 和 Update ()  
  同:当MonoBehaviour启用时,其在每一帧被调用。都是用来更新的
  异:Update()每一帧的时间不固定,即第一帧与第二帧的时间t1和第三帧与第四帧的时间t2不一定相同。FixedUpdate()每帧与每帧之间相差的时间是固定的.
  Update受当前渲染的物体影响,这与当前场景中正在被渲染的物体有关(比如人物的面数,个数等),有时快有时慢,帧率会变化,Update被调用的时间间隔就会发生变化。但是FixedUpdate则不受帧率的变化影响,它是以固定的时间间隔来被调用。
所以一些物理属性的更新操作应该放在FxiedUpdate中操作,比如Force,Collider,Rigidbody等。外设的操作也是,比如说键盘或者鼠标的输入输出Input,因为这样GameObject的物理表现的更平滑,更接近现实。
FixedUpdate的时间间隔可以在项目设置中更改,Edit->Project Setting->time 找到Fixed timestep。就可以修改了

  Update和LateUpdate
  LateUpdate是在所有Update函数调用后被调用。可用于调整脚本执行顺序。例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现。
Unity后台主线程将 Update LateUpdate 制作成两个多线程 先去执行Update的线程,等Update 执行完毕后 在去执行LateUpdate线程。
举个例子,一个宿舍4个人,每个人的起床在update中执行,出发在某个人中的lateupdate执行,这样就可以保证每个人都起床了才会出发。
  因为多个update函数是先后顺序是随机的,所以可能摄像机先update而物体还未移动,而下一帧是若物体先update那么就会出现瞬移的情况。多数摄像机都要加上LateUpdate,即所有场景内的调用结束后再更新摄像机。
  比如说:有2个不同的脚本同时在Update中控制一个物体,那么当其中一个脚本改变物体方位、旋转或者其他参数时,另一个脚本也在改变这些东西,那么这个物体的方位、旋转就会出现一定的反复。如果还有个物体在Update中跟随这个物体移动、旋转的话,那跟随的物体就会出现抖动。 如果是在LateUpdate中跟随的话就会只跟随所有Update执行完后的最后位置、旋转,这样就防止了抖动。
 [1] [2]

相关文章(向右看)..

·相关
unity:如何导入顶点变形动画
人工智能:照片放大、清晰加深神器/图
XP新增IIS连接数和站点的方法
U3d屏蔽物体的两种方法
安卓开发者必读:应用包名大全/图
Provider错误最终解决方法
Unity:物体没有影子问题必解
WIN2K、XP如何新增IIS连
Windows出错信息解析及解决
break、continue 、/图

·热点