协程
在主程序之外额外创建一段逻辑,来协助主程序的运行,并发执行
同时只能存在一个协程
开启方式1
//通过StartCoroutine(”方法名“)使用,但最多只能传递一个参数
//用协程开启void方法特别消耗系统内存,一般不推荐。
开启方式2
//通过StartCoroutine(IEnumerator routine)使用,可以传递多个参数
//使用协程开启IEnumerator类型方法一般推荐此方法
返回值等待说明
//yield return X; 数字(0除外的数字) 程序运行到这里,会等待1帧后执行
//yield return new WaitForSeconds(X); 等待X秒后执行
//yield return new WaitForFixedUpdate (); 等待FixedUpdate ()执行完后执行0.02f
//yield return new WaitForEndOfFrame (); 等待程序渲染和GUI中的内容完成后执行
//yield return StartCoroutine (); 本协程到这里停止 开启下一个协程,直至开启的协程关闭或运行结束后,则重新开始当前协程
//yield break; 直接结束当前协程
关闭协程
//1.StopCoroutine(string menthod)只能关闭通过StartCoroutine(”方法名“)开启的协程
//2.StopAllCoroutines 关闭所有协程
实例
void Start ()
{
//StartCoroutine ("TextCoroutineMethod");
//StartCoroutine (TextCoroutineMethod2(0,10));
//StartCoroutine (TextCoroutineMethod3(0,10));
//StopCoroutine ("TextCoroutineMethod");
//StopAllCoroutines ();
}
void TextCoroutineMethod( )
{
for (int i = 0; i < 10; i++)
{
Debug.Log (i);
}
}
IEnumerator TextCoroutineMethod2(int a,int b)
{
for (int i = a; i < b; i++)
{
Debug.Log (i);
//yield return new WaitForSeconds(2);
//yield return new WaitForFixedUpdate ();
//yield return new WaitForEndOfFrame ();
}
}
IEnumerator TextCoroutineMethod3(int a,int b)
{
while (true)
{
Debug.Log ("coroutine");
yield return StartCoroutine(TestTimer());
}
}
IEnumerator TestTimer()
{
//yield return new WaitForSeconds (4);
yield break;
}