Unity3D协程

来源:互联网 发布:联想电脑mac地址查询 编辑:程序博客网 时间:2024/06/08 13:38

协程:当开启一个协程后,Unity会进入协程函数执行,当遇到各种类型的yield语句时,Unity的执行权会回到开启协程的代码位置,继续这一帧的执行,当满足yield后面的语句条件时,Unity会从yield语句后继续执行。这只是个大致的概念,如果你没有看懂,后面会细说。


与C#协程不同的是,Unity的协程函数不需要规定函数返回值为IEnumerator,协程函数中可以不是yield return语句。
其yield有如下类型,根据类型不同,作用功能不同:
yield:是指开启协程函数后,系统会马上执行协程函数的内容,会执行到yield处停止,系统会保留yield代码处的执行环境,返回开启协程函数的地方,继续执行,在程序进入下一帧,Unity的Update函数执行后,系统会进入协程函数,找到上一帧保留的yield代码处,继续执行。
yield WaitForSeconds(2.f):和上面yield大致一样,只是Unity的Update进入执行yield语句后面的代码,需要满足2秒钟以后。
yield WaitForFixedUpdate:和yield大致一样,只是进入协程函数继续执行的时间为FixedUpdate后,Update之前。
yield WWW:和yield大致一样,进入协程函数继续执行的时间为Update()后,但是必须保证WWW类下载完成。
yield StartCoroutine :链式yield,继续执行的时间为子yield完成后。


大家一定要注意的是,yield以后,这一帧会返回协程函数开始的地方执行,yield后面的代码的执行,是在下一帧或者下几帧执行,而执行是由Unity系统负责,在Update()或者FixedUpdate()完成后,执行。
最后,看了不少网上关于协程的资料,可惜都没看到十分明白、详尽的,所以今天花了40分钟整理了一下,希望对大家有益处。
关于协程的更详细资料附上官网链接:
http://docs.unity3d.com/Manual/Coroutines.html
http://docs.unity3d.com/Manual/ExecutionOrder.html

0 0