正常情况下在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依旧会执行,所以导致了和我预期完全不同的结果。
呵呵,希望能记住这个问题,以后不再犯相同的错误。