C#协程的用法。

协程:协同程序,在主程序运行的同时,开启另一段逻辑处理,来协同当前程序的执行,。网络

开启协程的两种方式函数

一、StartCoroutine(string methodName)spa

注意:指针

(1)、参数是方法名(字符串类型),此方法能够包含一个参数协程

(2)、形参方法能够有返回值对象

 

二、StartCoroutine(IEnumerator method)接口

注意:字符串

(1)、参数是方法名(TestMethod()),方法中能够包含多个参数string

(2)、IEnumrator 类型的方法不能含有ref或者out 类型的参数,但能够含有被传递的引用it

(3)、必须有有返回值,且返回值类型为IEnumrator,返回值使用(yield retuen +表达式或者值,或者 yield break)语句

终止协程的两种方式:

StopCoroutine (string methodName),只能终止指定的协程

使用时注意:

在程序中调用StopCoroutine() 方法只能终止以字符串形式启动的协程

 

StopAllCoroutine(),终止全部协程

 

yield:挂起,程序遇到yield关键字时会被挂起,暂停执行,等待条件知足时从当前位置继续执行

yield return 0 or yield return null:程序在下一帧中从当前位置继续执行

yield return 1,2,3,......: 程序等待1,2,3...帧以后从当前位置继续执行

yield return new WaitForSeconds(n):程序等待n秒后从当前位置继续执行

yield new WaitForEndOfFrame():在全部的渲染以及GUI程序执行完成后从当前位置继续执行

yield new WaitForFixedUpdate():全部脚本中的FixedUpdate()函数都被执行后从当前位置继续执行

yield return WWW:等待一个网络请求完成后从当前位置继续执行

yield return StartCoroutine():等待一个协程执行完成后从当前位置继续执行

 

yield break

若是使用yield break语句,将会致使协程的执行条件不被知足,不会从当前的位置继续执行程序,而是直接从当前位置跳出函数体,回到函数的根部

 

协程的执行原理

协程函数的返回值时IEnumerator,它是一个迭代器,能够把它当成执行一个序列的某个节点的指针,它提供了两个重要的接口,分别是Current(返回当前指向的元素)和MoveNext()(将指针向后移动一个单位,若是移动成功,则返回true)

yield关键词用来声明序列中的下一个值或者是一个无心义的值,若是使用yield return x(x是指一个具体的对象或者数值)的话,那么MoveNext返回为true而且Current被赋值为x,若是使用yield break使得MoveNext()返回为false

若是MoveNext函数返回为true意味着协程的执行条件被知足,则可以从当前的位置继续往下执行。不然不能从当前位置继续往下执行。

相关文章
相关标签/搜索