Contents

Unity生命周期函数

生命周期函数

/usr/uploads/2019/11/20151014095608805.png


游戏的本质

游戏的本质就是一个死循环,每一次循环处理游戏逻辑就会更新一次画面,之所以能看到画面在动是因为切换画面的速度到达一定时人眼就认为画面是流畅的

一帧就是执行一次循环

Unity底层已经帮助我们做好了死循环


生命周期函数的概念

  • 所有继承Mono的脚本 最终都会挂载到GameObject游戏对象上
  • 生命周期函数 就是该脚本对象依附的GameObject对象从出生到消亡整个生命周期中通过反射自动调用的特殊函数
  • Unity帮助我们记录了一个GameObject对象依附了哪些脚本 会自动得到这些对象 通过反射执行一些固定名字的函数
  • 生命周期函数支持继承多态
  • 物体在非激活状态时不会调用生命周期函数,在激活状态时 这个脚本不管是否激活 都会调用awake函数
  • 生命周期函数 不是基类Mono中的成员 是Unity利用反射调用的
  • Unity帮我们记录了场景上所有的GameObject对象 以及关联的脚本对象 在游戏的特定时机 通过函数名反射得到脚本对象中对应的生命周期函数来执行

生命周期函数

  • 生命周期函数的访问修饰符一般为privateprotected
  • 避免在继承自Mono的类中使用构造函数(在初始化时构造函数会被unity执行多次)
  • Awake:当对象(自己这个类对象)被创建时 才会调用该生命周期函数(类似构造函数)
  • OnEnable:当当依附的对象激活时调用(物体被激活时 会激活脚本 本质上是脚本激活时调用)
  • Start:第一帧更新前调用
  • FixedUpdate:固定时间调用 默认0.02秒 可在Project Setting中的time中设置 主要用来处理物理相关的更新
  • Update:每一帧调用一次
  • LateUpdate:每帧调用一次在update之后执行 通常用于处理 摄像机位置更新相关内容(UpdateLateUpdate之间 Unity进行了一些处理 处理我们动画相关更新)
  • OnDisable:当依附的对象取消激活时调用和OnEnable是对应关系
  • OnDestroy:当对象销毁时调用(只会调用一次)销毁时也会调用OnDisable