Unity脚本事件执行

来源:互联网 发布:约瑟夫环java链表实现 编辑:程序博客网 时间:2024/06/05 00:21

Unity提供了许多系统事件调用函数,每个事件函数都有各自的调用时机,清楚这些函数的特点及作用,可以使我们在编写Unity脚本时,做到心中有数,避免错误。

先来张Unity官方文档里给出的事件图:


Awake() :  脚本实例在被加载的时候,就会立刻被执行。 游戏开始之前,用来初始化变量和游戏状态。Awake() 函数在脚本生命周期内只会执行一次,并且在执行前,游戏内所有的对象都会先被初始化包括脚本,因此,在Awake() 内可以放心的访问其他的对象。各个脚本的 Awake() 函数的执行顺序是随机的,所以你应该在 Awake() 中设置好脚本间的引用,然后在 Start() 函数中再使用它们。Awake() 先于所有的 Start() 函数调用,Awake() 函数不能被用作协同函数。


Start() : 在任何 Update() 函数第一次被调用之前调用,前提是脚本处于 enabled 状态,而 Awake() 则会忽视脚本 enabled 状态。  Start() 函数在脚本生命周期内也只会执行一次。


FixedUpdate() :  以固定频率调用的更新函数,默认每0.02s执行一次,可以在编辑器 Edit->Project Setting->Time 中的 Time Manger 面板中的 Fixed Timestep 选项用于设置 Fixed Update 更新频率。通常 FixedUpdate() 比 Update() 调用更频繁。对刚体的处理都要放在 FixedUpdate() 中, 一些连续的物理状态的更新一般也都放在这里面。 OnTriggerXXX 和 OnCollisionXXX 这些物理系统的函数和 FixedUpdate() 的调用频率一致。


Update() : Update用于正常的更新,即用于帧更新后同步场景状态。此方法每帧调用一次。Update() 的执行频率不确定,因为与实时帧率有关。


LateUpdate() : 用于延迟更新,此方法在 Update() 之后执行,每一帧调用一次。


OnDestroy() : 在当前脚本销毁时调用。若在脚本中分配了内存,可以在OnDestroy() 中进行释放。



0 0