您的位置:首页 > 移动开发 > Unity3D

Unity笔记 脚本执行顺序 life and times

2015-07-28 14:19 567 查看
单个脚本生命周期

在网上找了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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息