[Unity基础]Unity的生命周期

来源:互联网 发布:应用特征数据库升级 编辑:程序博客网 时间:2024/05/21 08:59

本文参考自官方文档:https://docs.unity3d.com/Manual/ExecutionOrder.html。


Unity的生命周期


官方给的流程图很清晰很详细,这里个人加一些说明:

1.Reset只会在编辑器中调用,来初始化脚本的属性,当它第一次连接到对象时,并且在使用重置命令时(点击脚本组件上齿轮里Reset)。


2.顺序:Awake -- OnEnable --Start

3.OnEnable每次脚本对象 由不可用变为可用时候调用(即所在物体Active且脚本组件Enable)

4.物体初始没有激活,则其身上脚本不会运行不会参与生命周期;初始激活后取消激活,则会最后调用OnDisable后,销毁时候仍调用OnDestroy。

5.物体初始激活,但是脚本未激活,会且只会运行Awake,OnEable Start Update都不会运行。

6.想当于Awake和OnDestroy一样权重,不管脚本的Enable状态,只看物体的Active。

7.OnEnable和OnDisable在脚本的每次enable-active都会调用,Awake和Start只会执行一次;直到脚本组件销毁。

8.自测了一下:初始,所有脚本组件的Awake顺序和OnEnable顺序不可控,但是一定所有的Start都在任意的OnEnable后面。

<即可能物体A的组件的Awake在B的OnEnable后面,也可能A的OnEnable在B的Awake前面,看资料也说不可控>


9.yield关键字相关可参考:http://blog.csdn.net/qq_33337811/article/details/73522063(Update和LateUpdate之间)


10.FixedUpdate经常会比Update调用的更频繁:如果帧率很低,它可以被多次调用,如果帧率很高,那么它可能不会在帧之间调用。所有的物理计算和更新发生在FixedUpdate之后。当在FixedUpdate中应用移动计算时,您不需要乘以Time.deltatime,这是因为FixedUpdate被调用在一个可靠的计时器上,独立于帧速率。

11.Update每帧调用一次(帧更新的主要使用方法)

12.LateUpdate:每帧调用一个,在Update之后。当LateUpdate开始的时候,所有的Update中计算都会完成。LateUpdate常用的是第三人称摄像头,如果你在Update中让你的角色移动或旋转,你可以在LateUpdate执行所有的相机移动和旋转计算,这将确保角色在摄像机呈现前完全移动。


13.OnApplicationQuit:这个函数在应用程序退出之前调用所有的游戏对象。在编辑器中,当用户停止播放模式时调用它。

下为官方的生命周期流程图:




原创粉丝点击