尊重原创,转载请在文首注明出处:http://blog.youkuaiyun.com/cai612781/article/details/78992805
一,定义
Unity协程(Coroutine),不是卖机票的携程,是一种类似子线程的机制,可以用来实现一些延时处理的需求,c#中通过yield return语句配合可以中断执行,延时一定时间后从中断处继续执行。
二,注意
协程不是线程,协程不是线程,协程不是线程,协程还是在主线程里!!!
三,语法
脚本需要继承MonoBehaviour,提供了两个方法StartCoroutine(IEnumerator routine)或者StartCoroutine(string methodName)开启一个协程,以及对应的StopCoroutine(IEnumerator routine)或StopCoroutine(string methodName)关闭协程。推荐使用前者,因为传递方法名需要用到反射机制,影响性能。
四,常见应用
1)延时(别想歪)
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
IEnumerator Start()
{
Debug.Log("Start--" + Time.time);
yield return StartCoroutine(WaitAndLog);
Debug.Log("End--" + Time.time);
}
IEnumerator WaitAndLog()
{
yield return new WaitForSeconds(3);
Debug.Log("Wait--" + Time.time);
}
}
2)分帧加载
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
private int _num,_total;
Start()
{
StartCoroutine(LoadAssets);
}
IEnumerator LoadAssets()
{
while(