在Unity3D脚本中,有许多函数(awake,OnEnable,start),它们会按照一定的顺序执行,我们把这个顺序叫做脚本的生命周期
我们直接引用一张图来讲解
我们来介绍几个主要的
Awake() 唤醒
当一个脚本实例被载入时Awake被调用。
Awake用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如 GameObject.FindWithTag 这样的函数搜索它们。每个游戏物体上的Awke以随机的顺序被调用。因此,你应该用Awake来设置脚本间的引用,并用Start来传递信息。Awake总是在Start之前被调用。它不能用来执行协同程序。
OnEnable() 当启用
当对象被启用并激活状态时此函数被调用。
Start() 开始
Start仅在当第一次脚本启用Update方法被调用之前调用。
就像Awake函数,在该脚本的生命周期Start被初始化一次。然而,Awake被调用时在脚本对象初始化时调用,不管脚本是否被启用。在同一帧如果在初始化的时候没有启用脚本,Start不会被调用。
FixedUpdate() 固定更新
当MonoBehaviour启用时,其 FixedUpdate 在每一帧被调用。处理Rigidbody时,需要用FixedUpdate代替Update。例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧。(两者帧长不同)
fixedUpdate之后一般会开始一些物理的检测,碰撞检测,触发检测,鼠标的点击事件检测等等。。。。。。。
Update() 更新
当MonoBehaviour启用时,其Update在每一帧被调用。Update是实现各种游戏行为最常用的函数。
Update之后,一般是开始一些,WWW,还有开启一些协程。。。。。。。
ps:FixedUpdate 和 Update 的区别 FixedUpdate是固定更新,(固定的时间,调用一次)而Update()取决于机器的性能(每秒调用的帧数)帧数不同,它调用一次的时间也可能不同
LateUpdate() 之后更新
当Behaviour启用时,其LateUpdate在每一帧被调用。LateUpdate是在所有Update函数调用后被调用。这可用于调整脚本执行顺序。例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现。
LateUpdate之后是开始一些场景渲染的函数
OnGUI() 当界面
渲染和处理GUI事件时调用。这意味着你的OnGUI程序将会在每一帧被调用。要得到更多的GUI事件的信息查阅Event。如果Monobehaviour的enabled属性设为false,OnGUI()将不会被调用。
OnDisable() 当禁用
当物体被销毁时它将被调用,并且可用于任意清理代码。当对象变为不可用或非激活状态时此函数被调用。当脚本编译完成之后被重加载时,OnDisable将被调用,OnEnable在脚本被载入后调用。
OnDestroy() 当销毁
当MonoBehaviour将被销毁时,这个函数被调用。OnDestroy被调用只会在预先已经被激活的游戏物体上。