首页 > 代码库 > 事件函数的执行顺序

事件函数的执行顺序



事件函数的执行顺序


unity的脚本,有大量的脚本执行按照预先确定的顺序执行的事件函数。此执行顺序说明如下:

  • Editor

  • Reset: Reset调用来初始化脚本的属性,当它第一次附加到该对象,并且使用Reset命令时。

    第一次Scene Load

scene启动 (一次为每个场景中的对象) 时,会调用这些函数。

  • Awake:此函数始终是开始任何职能之前调用,并且也是在一个预置实例化之后。(如果一个游戏对象处于非活动状态,Awake不会被调用当被激活时 或者一个附加到游戏对象的任何脚本中这个函数会被调用。

  • OnEnable:(如果对象处于活动状态时被调用):在对象被启用后,将调用此函数。发生这种情况是在创建一个MonoBehaviour实例时,例如当加载一个level或游戏对象带有脚本组件被实例化。

请注意对于对象添加到场景,所有脚本的清醒和 OnEnable函数将被调用之前启动、更新、 等统称为其中任何。当然,这不能强制执行时在游戏过程中实例化对象。

在第一帧更新之前

  • Start: Start第一帧更新仅当enabled了脚本实例之前,将调用 start

为对象添加到场景,开始将对所有脚本更新之前,调用函数等统称为其中任何。当然,这不能强制执行时在游戏过程中实例化对象。

帧之间

  • OnApplicationPause:这称为框架末尾暂停检测到,有效地之间正常的帧更新。OnApplicationPause调用,允许的比赛来证明表明暂停的状态的图形后,将发出一个额外的帧。

Update Order

当游戏逻辑和交互,动画,相机位置,等您要跟踪的时有几个不同的事件,您可以使用。常见的模式是执行大多数任务里面的更新功能,但也有其他可以使用的函数。

  • FixedUpdate:FixedUpdate通常被称为比更新更频繁。它可以被多次调用每帧,如果帧率偏低,它可能不根本被称为帧之间如果帧率较高。FixedUpdate后立即发生的所有物理计算和更新。当应用在FixedUpdate内的运动计算,你不需要将你的Time.deltaTime的值相乘。这是因为在一个可靠的定时器,独立的帧速率上调用FixedUpdate

  • Update:Update每帧调用一次。它是主要的主力框架更新的功能。

  • LateUpdate:LateUpdate是每帧,一次调用更新完毕后。LateUpdate开始时,将会完成在更新中执行的任何计算。常用的LateUpdate将以下的第三人称视角。如果你使你的性格,并且动转内更新,则可以在LateUpdate中执行所有摄像机的平移和旋转变换计算。这将确保该字符已经完全之前相机跟踪它的位置。

    呈现

  • OnPreCull:在相机中挑选出现场之前调用。扑杀确定哪些对象是可见的相机。只是在扑杀发生之前,将调用消隐。

  • OnBecameVisible/OnBecameInvisible:当对象变为可见/不可见的任何相机时调用。

  • OnWillRenderObject:每个摄像头调用一次,如果对象是可见。

  • OnPreRender在相机开始渲染场景之前调用。

  • OnRenderObject:所有普通的场景渲染完成后,调用你可以使用 GL类或 Graphics.DrawMeshNow,在这一点上绘制自定义几何。

  • OnPostRender:在相机完成渲染场景之后调用。

  • OnRenderImage (仅限专业版):在场景渲染完成允许屏幕图像的后处理后调用。

  • OnGUI:每帧响应 GUI事件调用多次。布局和重绘事件处理第一,紧接着的布局和键盘/鼠标的事件,为每个输入事件。

  • OnDrawGizmos用于可视化用于场景视图中绘制小玩意。

    协同程序

更新函数返回后运行正常的协程的更新。协同是一个函数,可以暂停其执行 (收益率),直到完成给定的 YieldInstruction。不同用途的协同程序:

  • yield后所有的更新功能已呼吁下一帧,将继续协同。

  • yieldWaitForSeconds在指定的时间延迟之后,继续后所有的更新功能一直呼吁的框架

  • yieldWaitForFixedUpdate在所有的 FixedUpdate被称为对所有脚本后继续

  • yield WWWWWW下载已完成后继续。

  • yieldStartCoroutine链协同,并将等待 MyFunc协同完成第一次。

    当对象被销毁

  • OnDestroy:所有帧更新的对象的存在 (对象可能毁于响应 Object.Destroy或一幕结束时) 的最后一帧后,将调用此函数。

    退出时

在你的场景中的所有活动对象上得到调用这些函数:

  • OnApplicationQuit:在应用程序退出之前,在所有的游戏物体上调用此函数。在编辑器中时用户停止攻击性影响调用。在网络播放器时关闭了 web视图调用。

  • OnDisable:调用此函数时的行为变得残疾人士或非活动状态。

    脚本生命周期流程图

下面的关系图概述订购和重复事件函数在脚本的一生。

事件函数的执行顺序