引子小李的三兄弟困惑上回说到小李把匹配等待的预计时长研究得透透的。这天他翻着代码盯着 MonoBehaviour 里那几个长得像三胞胎的函数越看越糊涂跑来求教老师傅,我这脑子又打结了!Unity 里有三个函数,长得跟三胞胎似的——Update()、FixedUpdate()、LateUpdate(),它们名字都带 Update、都是’反复执行的’,可我死活分不清!**我图省事,啥逻辑都一股脑往 Update() 里塞——移动、跳跃、物理、相机跟随……全堆一块儿。结果呢?**上回那个’小球穿墙、忽快忽慢’的 Bug,就是我把物理塞进 Update 惹的祸;**这回更邪门了——我做了个’相机跟着角色跑’的功能,角色明明跑得好好的,镜头却一抖一抖的、跟得黏黏糊糊、还老是慢半拍,看得人头晕!**老师傅,这三兄弟到底有啥不一样**?啥活儿该交给谁?我这’一锅烩’的写法,到底错哪儿了?**老师傅一听哈哈大笑“你这困惑几乎是每个 Unity 学徒都要过的一道坎这三兄弟啊看着像三胞胎脾气秉性、上工的钟点、干的活儿可大不一样你把它们不分青红皂白地’一锅烩’可不就乱套了——该按’固定节拍’干的活儿你让它跟着’忽快忽慢’走该’压轴收尾’的活儿你让它’抢先开工’今天我就把这’三班倒’的分工之道给你捋清楚”第一章先认清三班倒——它们各自在什么钟点上工老师傅说要分清这三兄弟先得搞明白一件事它们在一帧之内是按先后顺序、不同钟点上工的各有各的班次┌────────────────────────────────────────────────┐ │ 一帧之内的三班倒:谁先上、谁后上? │ │ │ │ 游戏的每一帧,就像工厂的一个工作日, │ │ 三兄弟按钟点、分班次,依次上工: │ │ │ │ ┌─── 一帧(一个工作日)开始 ───────────────┐ │ │ │ │ │ │ │ ① FixedUpdate() ← 【物理班】 │ │ │ │ 按固定节拍上工(可能一帧0次/1次/多次)│ │ │ │ 专管:物理计算(受力、刚体移动) │ │ │ │ ↓ │ │ │ │ ② Update() ← 【主力班】 │ │ │ │ 每帧【雷打不动】上工1次 │ │ │ │ 专管:游戏逻辑、输入检测、UI │ │ │ │ ↓ │ │ │ │ ③ LateUpdate() ← 【收尾班】 │ │ │ │ 每帧【最后】上工1次 │ │ │ │ 专管:压轴收尾(相机跟随等) │ │ │ │ │ │ │ └─────────── 一帧结束,渲染画面 ───────────┘ │ │ │ │ → 关键:它们不是同时干活,而是 │ │ 按固定的先后顺序,一个接一个上工! │ └────────────────────────────────────────────────┘三班倒的钟点游戏的每一帧就像工厂里的一个工作日这三兄弟不是同时干活而是按固定的先后顺序一个接一个上工——① FixedUpdate物理班按固定节拍上工一帧内可能执行 0 次、1 次或好几次② Update主力班每帧雷打不动、稳稳当当执行 1 次③ LateUpdate收尾班每帧的最后、压轴执行 1 次。关键认知三兄弟最大的共性是都反复执行但最大的不同是——它们的上工节奏和上工钟点完全不一样。小李一锅烩的错误正是无视了它们各自的班次特性把该交给专门班次的活儿胡乱塞给了不对的人。小李恍然“原来它们是’三班倒’、按先后顺序一个接一个上工——先物理班FixedUpdate、再主力班Update、最后收尾班LateUpdate!它们都’反复执行’是共性,可’上工的节奏和钟点’完全不一样!我’一锅烩’就是无视了它们各自的班次、把活儿塞给了不对的人!那……先说说这’主力班’Update,它到底管啥?”第二章Update()——每帧一次的主力班游戏逻辑的主心跳老师傅说先讲这最常用、也最好懂的主力班——Update()。它是整个游戏跳动的主心跳绝大多数的游戏逻辑都在这里执行┌────────────────────────────────────────────────┐ │ Update():每帧一次的主力班,游戏的主心跳! │ │ │ │ 特性:每一帧,雷打不动地执行【恰好一次】 │ │ (跟着画面刷新走——画面刷一帧,它跳一下) │ │ │ │ 它专管那些要跟着画面、实时响应的活儿: │ │ · 检测玩家输入(按了跳跃键没?点了鼠标没?) │ │ · 游戏逻辑(计时、计分、状态判断) │ │ · UI 更新(血条、倒计时数字往下跳) │ │ · 非物理的移动(简单位移) │ │ │ │ ⚠️ 致命陷阱:它的上工频率不稳定! │ │ 好机器1秒120帧→跳120次 │ │ 差机器1秒30帧 →跳30次 │ │ → 若把每次走1步写这儿,好机器就快、 │ │ 差机器就慢!(小球忽快忽慢的病根!) │ │ │ │ ✅ 解药:凡是跟时间/速度有关的,乘上 │ │ Time.deltaTime(这一帧过了多久)—— │ │ 每次走(速度 × 这帧耗时)步 │ │ → 好机器每次走一点点、跳得勤; │ │ 差机器每次走一大点、跳得疏; │ │ 乘一乘,一秒下来走的总距离,就一样了! │ └────────────────────────────────────────────────┘Update·主力班Update()是游戏跳动的主心跳——每一帧雷打不动执行恰好一次跟着画面刷新走。绝大多数的游戏逻辑都在这里检测玩家输入、游戏逻辑判断、UI 更新、非物理的简单移动。⚠️致命陷阱·频率不稳定Update 的执行频率紧紧跟着帧率走而帧率是不稳定的——好机器 1 秒 120 帧就跳 120 次、差机器 1 秒 30 帧就跳 30 次。所以若把每次移动一步直接写在 Update 里好机器上就飞快、差机器上就慢吞吞这正是之前小球忽快忽慢的病根之一✅解药·Time.deltaTime凡是跟时间、速度有关的计算都要乘上Time.deltaTime这一帧过了多长时间——好机器每帧只过一点点时间、就走一点点差机器每帧过很久、就走一大步这么一乘无论帧率快慢一秒下来走的总距离都一样速度就跟设备无关了。一句箴言在 Update 里别用帧数衡量进度要用时间衡量进度——这才是与设备无关的、稳定的节奏。小李眼睛一亮“懂了!Update是主力班、每帧雷打不动一次,是游戏主心跳——输入检测、逻辑、UI、简单移动都在这儿!但它频率不稳(好机器跳120次差机器跳30次),直接写’每次走1步’就忽快忽慢!解药是乘Time.deltaTime——好机器每帧走一点点、差机器每帧走一大点,乘一乘一秒总距离就一样了!别用帧数衡量进度、要用时间衡量!那……物理班’FixedUpdate,为啥非得单独一个班?”第三章FixedUpdate()——固定节拍的物理班稳定压倒一切老师傅郑重道来——这物理班正是小李之前栽跟头的地方物理计算对节拍的稳定要求极高所以 Unity 专门给了它一个雷打不动、固定节拍的班次┌────────────────────────────────────────────────┐ │ ⚛️ FixedUpdate():固定节拍的物理班! │ │ │ │ 特性:按【固定的时间间隔】上工(默认每0.02秒一次) │ │ → 不管机器快慢,它永远稳稳地每0.02秒 │ │ 跳一下,节拍雷打不动! │ │ │ │ 为什么物理必须用它? │ │ 物理计算(受力、加速、碰撞)必须建立在 │ │ 稳定的时间步长上,才能算得准、算得稳! │ │ │ │ 它一帧执行几次?看机器快慢自动补偿: │ │ 好机器(帧快,一帧才过0.008秒): │ │ → 有时一帧还不够0.02秒,这帧就【0次】 │ │ 差机器(帧慢,一帧过了0.05秒): │ │ → 积攒的时间够跑两三个0.02秒,这帧就【补跑2-3次】│ │ → 不管你帧率怎么变,它总能保证 │ │ 每0.02秒扎扎实实跑一次物理! ⚖️ │ │ │ │ ✅ 专管: │ │ · 刚体(Rigidbody)的移动、施加力AddForce │ │ · 一切物理相关的操作 │ │ │ │ → 稳定的节拍,才有稳定的物理—— │ │ 这就是它独立成班的意义! │ └────────────────────────────────────────────────┘FixedUpdate·物理班FixedUpdate()的特性是——按固定的时间间隔上工默认每 0.02 秒一次。不管机器快慢它永远稳稳地每 0.02 秒跳一下节拍雷打不动。为什么物理非它不可物理计算受力、加速、碰撞检测必须建立在稳定的时间步长上才能算得准、算得稳。如果步长忽大忽小像 Update 那样物理就会像小球那样忽快忽慢、甚至穿墙。⚖️它如何自动补偿FixedUpdate 一帧执行几次是看机器快慢自动调节的——好机器帧快、一帧才过 0.008 秒有时一帧还攒不够 0.02 秒这帧就执行 0 次差机器帧慢、一帧过了 0.05 秒积攒的时间够跑两三个 0.02 秒这帧就补跑 2~3 次。如此无论帧率怎么变它总能保证每 0.02 秒扎扎实实跑一次物理——稳定压倒一切。✅它专管刚体Rigidbody的移动、施加力AddForce、以及一切物理相关操作。小李连连点头“原来如此!FixedUpdate是物理班、按固定节拍每0.02秒跳一次、雷打不动!因为物理计算必须建立在稳定的时间步长上才算得准!它还会自动补偿——好机器帧快可能这帧跑0次、差机器帧慢就补跑2-3次,不管帧率怎么变、总保证每0.02秒扎扎实实跑一次物理!刚体移动、施加力都归它!稳定的节拍才有稳定的物理,这就是它独立成班的意义!那……最后那个’收尾班’LateUpdate,又为啥非得压轴?”第四章LateUpdate()——压轴收尾的收尾班专治跟不上、抖不停老师傅赞许地点头——这正是小李相机抖动、跟得黏糊那桩怪事的答案有些活儿必须等所有人都干完了、再压轴收尾才不出岔子——这就是收尾班LateUpdate 存在的意义┌────────────────────────────────────────────────┐ │ LateUpdate():压轴收尾的收尾班! │ │ │ │ 特性:每帧【最后】执行—— │ │ 等所有Update都跑完了,它才压轴上工! │ │ │ │ 经典难题:相机跟随角色 (小李的抖动之谜!) │ │ │ │ ❌ 把相机跟随写进Update()——顺序全凭运气! │ │ 情况A: 相机先跑 → 角色后跑 │ │ 相机跟到角色【旧位置】→ 角色又动了 → │ │ 相机永远【慢半拍】、追着角色的残影跑! │ │ → 镜头一抖一抖、黏黏糊糊! │ │ │ │ ✅ 把相机跟随写进LateUpdate()——压轴收尾! │ │ 先让所有角色在Update里【都动完、站定】, │ │ 最后LateUpdate才让相机去跟—— │ │ 此刻角色位置是【最终确定的】,相机 │ │ 一步跟到位、稳稳当当、丝般顺滑! ✨ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ 口诀: │ │ │ │ 角色动 → 在Update里 │ │ │ │ 相机跟 → 在LateUpdate里 │ │ │ │ (等被跟的先站定,跟的才跟得准!) │ │ │ └──────────────────────────────────┘ │ │ │ │ → 有些事必须最后做——等尘埃落定, │ │ 再收尾,才不出岔子! │ └────────────────────────────────────────────────┘LateUpdate·收尾班LateUpdate()的特性是——每帧的最后执行等所有 Update 都跑完了它才压轴上工。它解决什么·相机跟随小李抖动之谜的答案假设相机要跟随角色。如果把相机跟随也写进Update()那么相机和角色的执行顺序全凭运气——万一相机先跑、角色后跑相机跟到的是角色的旧位置可紧接着角色又动了于是相机永远慢半拍、追着角色的残影跑镜头就一抖一抖、黏黏糊糊这正是小李的病根。✅正解·写进 LateUpdate把相机跟随放进LateUpdate()——先让所有角色在 Update 里都动完、站定最后 LateUpdate 才让相机去跟。此刻角色的位置是最终确定的相机一步就跟到位稳稳当当、丝般顺滑。一句口诀角色动在 Update 里相机跟在 LateUpdate 里——等被跟随的先站定跟随的才跟得准。这就是收尾班的智慧有些事必须最后做等尘埃落定再收尾才不出岔子。小李豁然开朗“太妙了!原来这就是我相机抖动的病根!我把相机跟随写进Update、顺序全凭运气——万一相机先跑角色后跑,相机就跟到角色旧位置、永远慢半拍追着残影跑、镜头一抖一抖!正解是写进LateUpdate压轴收尾——先让角色在Update里都动完站定,最后相机才去跟,角色位置已确定、相机一步到位丝般顺滑!角色’动’在Update、相机’跟’在LateUpdate!有些事必须等尘埃落定再收尾!”第五章终极总结——三班倒的完整图谱小李把这场捋清三兄弟的领悟浓缩成一张表┌──────────────┬───────────┬──────────────┬─────────────┐ │ │ FixedUpdate│ Update │ LateUpdate │ ├──────────────┼───────────┼──────────────┼─────────────┤ │ 别名 │ 物理班 │ 主力班 │ 收尾班 │ │ 上工钟点 │ 最先(物理) │ 中间(每帧) │ 最后(收尾) │ │ 上工节奏 │ 固定0.02秒 │ 每帧1次 │ 每帧最后1次 │ │ 一帧执行次数 │ 0/1/多次 │ 恰好1次 │ 恰好1次 │ │ 跟谁走 │ 固定时间 │ 帧率(不稳) │ 帧率(最后) │ │ 专管 │ 物理/刚体 │ 逻辑/输入/UI │ 相机跟随 │ │ 关键提醒 │ 稳定压倒一切│ 记得×deltaTime│ 等尘埃落定 │ └──────────────┴───────────┴──────────────┴─────────────┘ 一句话口诀: 物理找Fixed(稳),逻辑找Update(勤),跟随找Late(稳收尾)!小李摸着这张表悟出了三班倒的题眼我总算把这’三兄弟’彻底捋清了——**原来它们看着像三胞胎,骨子里却是’各有其时、各司其职’的三班倒:物理活儿,要交给’按固定节拍、稳字当头’的 FixedUpdate;寻常逻辑,交给’每帧一次、勤勉主力’的 Update;而那些’必须等别人都干完、才好压轴收尾’的活儿,则要交给 LateUpdate!把活儿交给对的人、对的时辰,一切才顺!**而它给我最深的启示是:这世上的事,不只讲究’做什么’,更讲究’何时做、由谁做’;同样一件事,交给对的人、放在对的时机去做,便水到渠成,错了时、错了人,再对的事也会拧成乱麻。分清事情的’节奏与次第’、让每件事各得其时、各安其位——这份’各司其职、各得其时’的秩序感,正是把纷繁世事料理得井井有条的关键。尾声一套各司其职的三班倒亦是人生的智慧小李这场对三兄弟的捋清从一锅烩、分不清的困惑出发终于看清了 Update、FixedUpdate、LateUpdate 各有其班次、各司其职的分工之道——物理求稳交 Fixed、逻辑求勤交 Update、收尾求稳交 Late。但当我们合上书会发现这套各司其职的三班倒背后竟也舒展着几分耐人寻味的人生哲理。第一事情不只讲做什么更讲何时做、由谁做——各司其职、各得其时秩序方成。这套三班倒最根本的智慧是——同样是反复执行却分出了固定节拍的物理班、每帧勤勉的主力班、压轴收尾的收尾班把对的活儿交给对的人、对的时辰一切才顺。这何尝不是一记对人生的深刻点拨我们做事常常只盯着做什么(内容)“,却忽略了何时做、由谁做、按什么次第做(秩序)”。可现实是同样一件事,放在对的时机、交给对的人去做,便水到渠成;错了时、错了人、乱了次第,再对的事也会拧成一团乱麻(正如小李把物理塞进Update、把相机塞进乱序,好事全办砸了)。真正会做事的人懂得世间万事各有其节奏与次第:有的事像物理般求稳、需按固定节拍不慌不乱地推进;有的事像逻辑般求勤、需持续不断地响应;有的事则像收尾般讲时机、必须等前面尘埃落定了才好动手。分清每件事的脾性与时序让它们各安其位、各得其时,而非胡乱一锅烩——这份各司其职、各得其时的秩序感,正是把纷繁世事料理得井井有条、把每件事都办漂亮的关键。乱了秩序,忙也白忙;理顺次第,事半功倍。第二稳与勤是两种不同的节奏——要紧的根基求稳定日常的响应求勤勉。FixedUpdate 与 Update 的分野藏着一份关于节奏的智慧——物理这类根基性的事交给按固定节拍、稳字当头的 FixedUpdate逻辑响应这类日常性的事交给每帧一次、勤勉不辍的 Update求稳的归求稳、求勤的归求勤。这道破了一个关于做事节奏的深刻真理:人生里的事,粗分也有这两类不同的节奏——一类是根基性、原则性的大事(如健康、品格、核心能力、长远方向),它们最需要的是稳:按自己笃定的节拍,不受外界忽快忽慢的干扰,持之以恒、稳扎稳打;另一类是响应性、日常性的小事(如应对眼前的事务、回应当下的变化),它们需要的是勤:跟得上节奏、及时地响应处理。许多人的失序恰恰在于把这两种节奏搞反了:对该稳的根基大事三天打鱼两天晒网、任其随外界忽快忽慢(如同物理错放进Update而忽快忽慢),对该勤的日常小事却又过分执着纠缠。智慧的人懂得给根基性的事以稳定的节拍(像FixedUpdate守住0.02秒),给日常性的事以勤勉的响应(像Update每帧不辍)——稳住了根基,又勤于日常,人生便既有定力、又有活力。第三有些事急不得要等尘埃落定再收尾——沉住气压轴胜过抢先出手。LateUpdate 那压轴收尾的智慧藏着一份难得的沉稳——它不争先、不抢跑偏要等所有 Update 都跑完、被跟随的都站定了才最后从容出手正因它肯等一等才跟得又准又稳避免了追着残影跑的抖动。这道破了一个关于时机与沉得住气的处世智慧:生活中有许多事,天然就是收尾性、响应性的——它需要建立在别人先做完、情况先明朗、尘埃先落定的基础上,才好动手。面对这类事性急的人总忍不住抢先出手:情况还没明朗就急着下判断、别人还没说完就急着接话、事情还在变动就急着定论——结果往往像那抢跑的相机,跟到的全是旧位置、残影,事后频频返工、追悔(“早知道再等等就好了”)。而沉得住气的人懂得有些事,晚一步反而快、等一等反而准——先让该发生的充分发生、让该明朗的彻底明朗,再从容地压轴收尾,一步到位、稳稳当当。这份不争一时之先、肯等尘埃落定的沉稳看似慢了半拍,实则避开了无数因抢跑而生的抖动与返工。懂得何时该抢先、何时该压轴的人,才是真正拿捏住了做事的火候。下次当你只顾做什么却乱了何时做、由谁做的次第或把该稳的根基和该勤的日常搞反了节奏又或性急地抢先出手、跟到的尽是残影时请记得这套三班倒的智慧——像那 **各司其职的三班倒**那样分清每件事的节奏与次第让它们各安其位、各得其时而非胡乱一锅烩像那 **稳勤分明的物理班与主力班**那样给根基性的大事以稳定的节拍、给日常性的小事以勤勉的响应既有定力又有活力更像那 **压轴收尾的收尾班**那样沉住气、不抢跑等尘埃落定再从容出手一步到位、稳稳当当。于是你成了那个理得清次第、拿得准节奏、又沉得住气的通达之人。“Unity 的 Update、FixedUpdate、LateUpdate”就是这门关于各司其职各得其时、根基求稳日常求勤、沉住气等尘埃落定的、朴素而深刻的智慧。它告诉我们做事不只讲做什么、更讲何时做由谁做各司其职各得其时秩序方成稳与勤是两种节奏根基求稳定、日常求勤勉有些事急不得、要等尘埃落定再收尾沉住气压轴胜过抢先出手。它像一句朴素的箴言提醒着我们——别只顾做什么而乱了何时做、由谁做的次第懂得世间万事各有节奏与时序让每件事各安其位、各得其时而非胡乱一锅烩别把该稳的根基大事和该勤的日常小事搞反了节奏给根基以稳定的节拍、给日常以勤勉的响应既守得住定力、又跟得上变化别性急地抢先出手、跟到尽是残影懂得有些事晚一步反而快、等一等反而准沉住气等尘埃落定再从容压轴、一步到位——一个懂得各司其职、稳勤分明、沉住气收尾的人才能像那配合无间的三班倒把物理的根基交给稳定的节拍把日常的响应交给勤勉的主力把收尾的活儿交给沉稳的压轴于是做事者有序持重者有定沉稳者有成活成一个既理得清次第、又拿得准节奏、更沉得住气的井然而通达之人。这就是藏在Unity 三兄弟 Update、FixedUpdate、LateUpdate那套各司其职的三班倒背后最深、也最美的浪漫。