关于Unity3D 的脚本的执行顺序

阅读了雨松MOMO的《Unity3D研究院之深入理解Unity脚本的执行顺序(六十二)》感觉有些地方还是没有说清楚。

问题如下:

①当在Inspector面板上勾上GameObject的active,但没有勾选脚本时的执行顺序是怎样

②当在Inspector面板上没有勾上GameObject的active,但勾选了脚本时的执行顺序是怎样

③当在Inspector面板上没有勾上GameObject的active,也没有勾选了脚本时的执行顺序是怎样

④当在Inspector面板上勾上了GameObject的active,也勾上了脚本时的执行顺序是怎样


解决这四个问题必须要知道,以下几条规则:

1.正常的脚本时执行顺序为Awake->OnEnable->Start->....->OnDisable->OnDestroy

2.OnDisable 当物体被销毁时 OnDisable将被调用,并且可用于任意清理代码。脚本被卸载时,OnDisable将被调用,OnEnable在脚本被载入后调用。注意: OnDisable不能用于协同程序。
3.OnDestory 当MonoBehaviour将被销毁时,这个函数被调用。OnDestroy只会在预先已经被激活的游戏物体上被调用。注意:OnDestroy也不能用于协同程序。

4.Awake和Start在一个游戏物体的生命周期中只调用一次,但是OnEnable会在每次激活脚本的时候再次执行。

所以,

关于第④个问题,执行顺序因为Awake->OnEnable->Start->....->OnDisable->OnDestroy。

关于第③个问题,不会有任何函数执行,当运行时勾上GameObject的active,Awake函数会立即调用,勾上GameObject的脚本后OnEnable和Start会接着被调用。

关于第②个问题,不会有任何函数执行,当运行时勾上GameObject时,Awake,OnEnable,Start会立即执行。

关于第个问题,Awake会先执行,当运行时勾上GameObject的脚本时,OnEnable,Start会立即执行。

同时注意到汇总后的执行顺序如下

后台()

{

   //脚本A

   A-Awake();

   A-OnEnable();

   //脚本B

   B-Awake();

   B-OnEnable();

   

   A-Start();//脚本A

   B-Start();//脚本B

   ......

   ......

   A-OnDisable();

   B-OnDisable();

   A-OnDestroy();

   B-OnDestroy();

}


最后一张图说明一切


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值