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);

results matching ""

    No results matching ""