Unity MonoBehaviour生命周期

  • Post author:
  • Post category:其他


生命周期函数:


  • 静态构造函数:

    当程序集被加载的时候就被调用了,如果你的unity处于编辑状态时,此时你保存一个脚本(从而迫使重新编译),静态构造函数会立即被调用,因为unity加载了DLL。并且它将不会再次运行,永远只会执行一次,unity运行时,是不会再次执行了!在一个已部署的游戏上,这个构造器将会在unity加载过程的早期被调用!

  • Awake:

    唤醒事件,只执行一次

    游戏一开始运行就执行  在Start方法之前被调用! 主要用于字段值的初始化工作,禁用脚本,创建游戏对象,或者 Resources.Load(Prefab) 对象

  • OnEnable:

    启用事件,只执行一次,当脚本组件被启用的时候执行一次

  • Start:

    开始事件,只执行一次  在Awake方法执行结束后执行,但在Update方法执行前执行,

    主要用于程序UI的初始化操作,比如获取游戏对象或者组件

  • FixedUpdate:

    固定更新事件,每隔0.02秒执行一次,

    所有物理组件相关的更新都在这个事件中处理 不管当前机器忙不忙,都会保证每一帧执行一次!避免跳帧!固定更新。固定更新常用于移动模型等操作

  • Update:

    更新事件,每帧执行一次

    每一帧执行的,监听用户输入,播放动画,当机器忙或者性能差的时候,他会停止执行,会产生停顿的感觉,例如一个人本来在1米的位置,突然到了5米的位置上,产生了跳帧,而下面的FixedUpdate方法则相反!会一米一米的去执行!(自己调试发现,Update是先于OnGUI执行的,且执行一次Update之后,会执行两次OnGUI)

  • LateUpdate:

    稍后更新事件,每帧执行一次,在Update事件执行完毕后再执行





    可用于调整脚本执行顺序 例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现



  • OnGUI:

    GUI渲染事件,每帧执行两次

    在这里面进行GUI的绘制,且GUI是每帧擦除重绘的!仅仅只是绘制!没有生命周期的概念!所有关于绘制GUI的代码,都要直接或者间接地写到OnGUI方法中!

  • OnDisable:

    禁用事件,只执行一次,在OnDestory事件前执行,或者当该脚本组件被禁用后,也会触发该事件

    脚本可用时被调用、如果脚本是不可用的,将不会被调用!

  • OnDestory:

    销毁事件,只执行一次,当脚本所挂载的游戏物体被销毁时执行

生命周期调用顺序:

Awake-OnEnable-Start-FixedUpdate-Update-LateUpdate-OnGUI-OnDisable-OnDestory

完整的生命周期

这里写图片描述



版权声明:本文为W__YH原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。