unity 3D c# 协程的典型用法-Unity官方案例精讲笔记

什么是协程(Coroutine)

在unity中,协程的概念类似于线程,它是一种特殊的函数,能够中断(通过yield语句)执行当前的代码,直到中断指令(YieldInstruction)结束后再接着执行之前的代码。

典型用法

unity 3D c# 协程的典型用法-Unity官方案例精讲笔记_第1张图片

注意事项

  1. 协程的返回值必须是IEnunmerator
  2. 协程的参数不能加ref或out
  3. 在c#脚本中,必须通过StartCoroutine来驱动协程
  4. yield语句要用yield return 来代替
  5. StartCoroutine只能在monoBehaviour或其子类中使用
  6. StartCoroutine接收协程的名称(字符串)或IEnumerator实例作为参数
  7. 在Unity中,可以使用函数StopCoroutine来终止一个协程,但这种方法只适用于使用协程的名称作为参数启动的协程。使用StopAllCoroutine可以终止该monoBehaviour中的所有协程。还有一个不常用的方法来终止协程,即将协程所在的游戏对象的active属性设置为false,但是当再次将active改为TRUE时,协程不会自动启动。
  8. yield return 语句不能用在try-catch语句块中,但可以用在try-finally中的try语句块中
  9. yield return语句不能放在匿名方法中
  10. yield return语句不能放在unsafe语句块中

示例代码

 IEnumerator WaitAndPrint()
    {
        yield return new WaitForSeconds(1);//WaitForSeconds()受Time.timeScale影响,当Time.timeScale为0时,yield return new WaitForSeconds(n) 将失效
        print("WaitAndPrint");
    }
 IEnumerator Download()
    {
        string url = "http://download.csdn.net/detail/sakurallj/9926053";
        WWW w =new WWW(url);
        yield return w;
        if (w!=null)
        {
            Debug.Log(w.text);
        }
        StopAllCoroutines();
    }

参考
Unity官方案例精讲的协程章节,下载地址在这里

你可能感兴趣的:(unity3d,unity)