关于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
    评论
Unity中,可以通过修改脚本执行顺序来控制不同脚本之间的事件函数的调用顺序。有三种方法可以实现这个目的。 第一种方法是通过修改脚本的.cs.meta文件来控制脚本执行顺序。在Unity编辑器中,每个脚本文件都对应着一个.cs.meta文件。你可以打开.cs.meta文件,并修改其中的"executionOrder"属性的值来改变脚本执行顺序。较小的值表示较早执行,较大的值表示较晚执行。这种方法需要对每个脚本进行手动调整,比较繁琐。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【Unity3D日常开发】Unity3D中实现不同脚本之间的执行顺序控制](https://blog.csdn.net/q764424567/article/details/128920346)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Unity改变脚本执行顺序](https://blog.csdn.net/weixin_42935398/article/details/123800807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值