今天遇到一个问题,记录一下,顺便吧Monobehaviour生命周期 重新看了一遍。
Q:当在monobehaciour中调用了StartCoroutine后(此时yield return new WaitForSeconds(5f))monobehaciour脚本的enable置程false,那么协程后面的代码还会执行吗?
其实我的第一反应是不执行了,但是经过测试发现,我是错的。
先看一下正常情况下,协程的执行顺序
1 | using System.Collections; |
输出:

那么现在改一下代码,在Start中调用完了协程后,将这个monobehaviour的enable置为false,看一下输出结果
1 | using System.Collections; |
结果:

也就是说我们在将monobehaviour的enable置程false后并没能终止协程,协程还是在运行,但是如果我们将GameObject的SetActive(false)后协程和monobehaviour和协程都会停止。
所以monobehaviour的enable是对协程没有影响的
最后 看一下Unity Monobehaviour的生命周期图
