[Unity3D]脚本生命周期学习

脚本的生命周期

继承于MonoBehaviour的类对象无需手动实例化,由引擎来决定实例化的时机

  • Awake:每当脚本被加载的时候调用一次,就是说即使脚本没有被勾选,也会调用一次,主要用来做一些初始化操作,尤其是一些public类型的字段,因为有时候在脚本激活之前,其它脚本也许会使用当前脚本的public字段
  • OnEnable: 每次激活脚本的时候调用(也就是在☑️了脚本之后调用)
    194303-20160926223208063-450395343.png
    代码中执行SetActive(true)也是激活的这个方法
    194303-20161020161859420-1776596757.png

  • Start: 在第一次调用Update之前调用,即使脚本被重新激活,也不会额外执行,在整个脚本的生命周期中只执行一次,所以也会在这个方法中做一些初始化操作,一般是初始化脚本的private字段,或者也可以调用延迟销毁的方法:Destroy (this.gameObject,this.lifeTime);
  • Update: 每帧调用一次
    • 注意Start/Update都不是MonoBehaviour本身的方法,而是通过反射调用的一些事件
  • LateUpdate: 在Update方法调用完之后调用,主要用来在角色更新完之后(比如位置更改完成后),我们需要去刷新一些逻辑
  • OnDisable: 脚本被取消激活后调用,可以通过调用SetActive(false)触发 194303-20160926224120766-610470763.png
  • OnDestroy: 被销毁的时候调用一次,比如怪物死后爆装备的逻辑就可以写在这里

上述方法调用流程图

[Unity3D]脚本生命周期学习_第1张图片

  • OnGUI: 持续调用,IMGUI代码需要写在这里
  • FixedUpdate: 以固定的频率调用,不会受到图像刷新帧速率的影响,一般我们会把处理物理的代码放在这里

完整调用流程

[Unity3D]脚本生命周期学习_第2张图片

转载于:https://www.cnblogs.com/xiuj/p/5911001.html

你可能感兴趣的:([Unity3D]脚本生命周期学习)