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

来源:互联网 发布:怎么看网络有几个人用 编辑:程序博客网 时间:2024/06/16 21:34

单个脚本生命周期
在网上找了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

0 0