
引子:那只"看不见的手"前两篇文章里,小明已经把 MonoBehaviour 的生命周期用得有模有样了。他知道Awake先于Start,知道Update每帧执行,知道物理要放FixedUpdate……可某天深夜,他调试代码时,突然被一个念头攫住,再也睡不着了:“等等……这些函数,到底是’谁’在调用它们的?”他从头翻遍了自己的整个项目,一行一行地找——他从来没有,在任何地方,写过一句Update();或者Awake();去主动调用它们。他只是"定义"了这些函数,写好了函数体,然后……它们就自己在正确的时刻、按正确的顺序,一个个地运行了。这就像什么?就像你在纸上写好了一份"作息表"——早上6点起床、7点吃饭、8点上班——然后,竟然真的有一只"看不见的手",在每天早上6点准时把你叫醒,7点把饭端到你面前,8点把你送到公司。那只"看不见的手",究竟是什么?它藏在哪里?它是如何日复一日、每秒钟不知疲倦地运转几十上百次,精准地敲响每一个函数的门的?这个问题,触及了 Unity 引擎最核心、最底层的秘密——引擎的"主循环(Main Loop)“,也就是 Unity 的"心脏”。前两篇,我们站在"使用者"的角度,学会了"把代码放进哪个函数"。而今天这一篇,我们要往下潜