生命周期函数的访问修饰符一般为private或者protected,支持继承多态
按照调用顺序:
Awake:当对象(脚本对应的类对象)被创建时,才会调用该生命周期函数。类似构造函数,一个对象只会调用一次,在一个类对象刚创建时进行一些初始化操作。是否调用与脚本是否激活无关,与GameObject激活有关(未激活不调用),而在Awake调用之前,所有GameObject对象都已经创建完成,可以在Awake中通过Find方法找到对应的物体。
打印信息:Debug.Log/Debug.LogError/Debug.LogWarning
OnEnable:依附的GameObject对象每次被激活时调用(SetActive)
Start:进行第一次帧更新之前才会执行。只有在GameObject被激活后才会被调用,但重复激活只会被调用一次,即只有在第一次被激活时会调用。在Start中初始化不一定很安全,因为可能会被其他自定义的函数抢先。
与Awake区别具体参考:https://blog.csdn.net/puppet_master/article/details/50975186
FixedUpdate:主要用于物理更新,每个固定时间间隔执行,时间设置在project setting->Time->Fixed Timestep中设置
Update:主要用于处理游戏核心逻辑更新的函数。
LateUpdate:一般用于处理摄像机位置更新相关的内容,Update和LateUpdated之间,Unity进行了一些处理,对动画相关的更新,影响渲染的结果,如果在Update中更新摄像机,即摄像机位置变化后再更新动画,可能会出现渲染的错误,其运行帧率与Update相同
OnDisable:失活时调用
OnDestroy:销毁物体时调用,会先调用OnDisable
如果不打算再其中写逻辑,就不要写相关函数,因为通过反射调用会有额外开销