在进行主任务的过程中我们需要一个对资源消耗极大的操作时,如果在一帧中实现这一的操作,游戏就会变得十分卡顿,这个时候,我们就可以通过协程,在一定帧内完成该工作的处理,同时不影响主任务的进行。
实现原理
协程依旧是在主线程中进行,通过关键字IEnumerator
来定义一个迭代方法,在迭代方法中使用yield
关键字,可以使协程的运行暂停、记录下一次启动的时间与位置等。
在程序中通过StartCoroutine
来开启一个协程,StopCoroutine
来关闭一个协程。
注意不是IEnumerable
,它是在IEnumerator
基础上的一个封装接口,有一个GetEnumerator()
方法返回IEnumerator
。
使用方法
StartCoroutine
的重载:
StartCoroutine(string methodName)
:通过方法的名字来开启协程
StartCoroutine(string methodName,object values)
:带形参的情况下,通过方法的名字来开启协程
StartCoroutine(IEnumerator routine)
:通过指定的方法调用协程
StopCoroutine
的重载: