脚本的生命周期
继承于MonoBehaviour
的类对象无需手动实例化,由引擎来决定实例化的时机
-
Awake
:每当脚本被加载的时候调用一次,就是说即使脚本没有被勾选,也会调用一次,主要用来做一些初始化操作,尤其是一些public类型的字段,因为有时候在脚本激活之前,其它脚本也许会使用当前脚本的public字段 OnEnable
: 每次激活脚本的时候调用(也就是在☑️了脚本之后调用)
代码中执行SetActive(true)
也是激活的这个方法-
Start
: 在第一次调用Update
之前调用,即使脚本被重新激活,也不会额外执行,在整个脚本的生命周期中只执行一次,所以也会在这个方法中做一些初始化操作,一般是初始化脚本的private字段,或者也可以调用延迟销毁的方法:Destroy (this.gameObject,this.lifeTime);
-
Update
: 每帧调用一次-
注意:
Start/Update
都不是MonoBehaviour
本身的方法,而是通过反射调用的一些事件
-
注意:
-
LateUpdate
: 在Update
方法调用完之后调用,主要用来在角色更新完之后(比如位置更改完成后),我们需要去刷新一些逻辑 -
OnDisable
: 脚本被取消激活后调用,可以通过调用SetActive(false)
触发 OnDestroy
: 被销毁的时候调用一次,比如怪物死后爆装备的逻辑就可以写在这里
上述方法调用流程图
-
OnGUI
: 持续调用,IMGUI代码需要写在这里 -
FixedUpdate
: 以固定的频率调用,不会受到图像刷新帧速率的影响,一般我们会把处理物理的代码放在这里