单个脚本生命周期
在网上找了2张图:
这个不太清楚简略看看
这个清楚
事件函数说明
1)Awake Start
在生命期只执行一次。多次重置可以放在OnEnable里处理。
2)FixedUpdate
用于固定频率更新,Edit->Project Setting->Time中的TimeManager可以设置频率。当Time Scale为0时,FixedUpdate代码不执行,物理处理也暂停。
3)Update,LateUpdate
和帧数同步的调用,Time.deltaTime可获得帧间隔。LateUpdate在Update后调用。
4)OnGUI
在每帧上多次调用此函数,以响应 GUI 事件。程序首先将处理 Layout 和 Repaint 事件,然后再处理每个输入事件的 Layout 和 keyboard鼠标事件。
5)OnDestroy
当脚本销毁时调用,可用来释放申请的内存。
多个脚本执行顺序
例如游戏中3个GameObject:go1 go2 go3,分别绑定3个脚本。
脚本只是在Awake和Update中分别打印自己名字和事件名。
go1脚本如下:
void Awake ()
{
Debug.Log("go1 awake");
}
void Update ()
{
Debug.Log("go2 update");
}
go2 和 go3 脚本类似,只是log的名字不同。
结果如下:
go1 awake
go2 awake
go3 awake
go1 update
go2 update
go3 update
看来Unity是把所有的GameObject同类的事件函数一起执行完再执行下一类。
改变顺序
通过Edit->Project Settings->Script Execution Order打开MonoManager面板,可以交换go1和go2顺序调整脚本执行先后,得到如下结果。
go2 awake
go1 awake
go3 awake
go2 update
go1 update
go3 update