关于Unity的Monobehaviour类中的Start和OnEnable和OnDisable的执行顺序碰到的问题。

38 篇文章 1 订阅
文章讲述了在Monobehaviour中,当实例化对象并迅速将其enabled设为false时,OnEnable不会被执行,Start也因此未启动,这导致了开发者的预期与实际结果不符。作者借此提醒自己和读者注意此类行为可能导致的逻辑问题。
摘要由CSDN通过智能技术生成

        正常情况下在Monobehaviour类中的Start和OnEnable的执行顺序是先执行OnEnable,然后再执行Start,当然了,OnEnable和OnDisable可以反复执行,而Start只能执行一次。但是最近程序里面出现一个bug,发现最终还是个人对这个顺序理解的不够好。

        我首先使用Instantiate复制了一个Monobehaviour类的对象,然后马上将这个类的enabled设置为false,那么实际上就执行了OnDisable,本来正常情况下没有将enabled设置为false的话,是要自动执行OnEnabled的,然后再执行Start,但这个时候实际上OnEnable是不会执行的,而Start要在OnEnable第一次执行时候再执行,所以导致Start也不会执行了,就是说这个对象已经enabled为false的情况下存在一段时间了,但是其Start一直没有执行,而我以为Start依旧会执行,所以导致了和我预期完全不同的结果。

        呵呵,希望能记住这个问题,以后不再犯相同的错误。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值