Unity3d脚本的生命周期

在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被调用只会在预先已经被激活的游戏物体上。

你可能感兴趣的:(Unity3D)