Coroutine
协同程序
MonoBehaviour.StartCoroutine:返回一个Coroutine。这个类的实例仅用于引用这些协同程序,并不持有任意暴露的变量或函数。
一个coroutine是一个函数,它能暂停执行(yield),直到给定的YieldInstruction完成。
协同程序的方法和普通方法的区别:
调用普通方法会等待方法执行完毕以后再执行接下来的程序
调用携程方法,则不会等待方法执行完毕就可以继续执行下面的程序了
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CoroutineTest : MonoBehaviour {
// Use this for initialization
void Start () {
Debug.Log ("do 1");
//ChangeColor ();
StartCoroutine (ChangeColorCoroutine());
Debug.Log ("do 2");
}
// Update is called once per frame
void Update () {
}
//普通方法
void ChangeColor() {
Debug.Log ("change start");
GetComponent<Renderer> ().material.color = Color.blue;
Debug.Log ("change end");
}
//协程方法
IEnumerator ChangeColorCoroutine() {
Debug.Log ("change start");
GetComponent<Renderer> ().material.color = Color.blue;
Debug.Log ("change end");
yield return null;
}
}
定义协程方法:
定义一个返回值为IEnumerator的方法,返回值之前加yield
调用协程方法:
StartCoroutine (协程方法());
协程方法中暂停几秒再执行:
yield return new WaitForSeconds (5);