协程官方doc解释
A coroutine is a function that can suspend its execution(yield) until the given given YieldInstruction finishes.
StartCoroutine开启协程 先执行协程中的代码 碰到yield return时控制权交给unity引擎
引擎继续做接下来的工作例如第一次yield return之后执行StartCoroutine下一行代码
直到满足yield指令的要求才会重新进入协程中的yield点
unity像是做如下的事情:
IEnumerator r = someCoroutine;
while (r.MoveNext())
{
while (!GetYieldCondition(r.Current))
{
//do other things
}
}
另外Invoke和InvokeRepeat实际上都是协程,并不是多线程
在unity里边使用.Net多线程做一些事情是非常好的,比如解压资源 更新资源等。
因为单开线程的话 不会影响主线程卡顿,这样UI就不会卡了。
但是开的线程里边不能执行unity主线程的mono代码。线程启动后,执行完毕自动结束该线程、可以同时启动多个线程做事。