基本概念
Coroutine,概念上讲,有两点值得注意的:1.它是在主程序运行时同时开启另一段逻辑处理来协同当前程序的执行。2.开启协同程序就类似于开启一个线程,但是它又不是真正意义上的多线程。
实例讲解
下面为了快速理解,我用一个简单的实例来说说它的具体使用方法。
首先,没有用Coroutine的时候,我们要在鼠标点击一个Cube时让这个Cube的X方向移动到10然后回到原点,下面是代码,但是这样我们会发现点击鼠标以后没有任何效果,因为循环执行的太快了。
void OnMouseDown ()
{
testMove ();
}
void testMove ()
{
for (int i=0; i<100; i++) {
transform.Translate(0.1f, 0f, 0f);
}
//回到原点
transform.position = new Vector3(0, 0, 0);
Debug.Log("Completed Moving!");
}
要达到我们想要的效果,可能有人说可以在Update函数中执行移动的部分。没错,可以那么去做,但是也可以用Coroutine达到我们想要的效果。
再次,用Coroutine重新实现功能,我们就可以看到我们的Cube移动以后又回到原点。我先直接上代码,后面再做讲解。
void OnMouseDown ()
{
StartCoroutine (testCoroutineMove());
}
IEnumerator testCoroutineMove()
{
for (int i=