Unity 协程

2017-06-24  本文已影响53人  cwxyz

unity 里面的协程流程

  1. 开始协程 StartCoroutine("DoSomething");
  2. 执行到 yield return 时,执行 ruturn后面的语句
  3. 之后就结束了,然后下一帧时继续执行
  4. 下一帧的时候从 yield return 的下一句语句继续执行

这样就把一个死循环也在一个函数里,然后使用协程来处理。例如程序需要一直监视某个变量是否发生变化。就可以用协程来实现。

如果把协程里死循环里面的语句放在 Update() 函数里,那么所呈现的效果基本是一样的。

例子:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    private IEnumerator coroutine;

    void Start()
    {
        // 打印顺序
        // 0 秒过后,打印“Starting 0.0”
        // 0 秒过后,打印“Before WaitAndPrint Finishes 0.0”
        // 2 秒过后,打印“WaitAndPrint 2.0”
        // 之后每过 2 秒,都会打印一次“WaitAndPrint  + Time.time”
        print("Starting " + Time.time);
        
        coroutine = WaitAndPrint(2.0f);
        StartCoroutine(coroutine);

        print("Before WaitAndPrint Finishes " + Time.time);
    }

    // 每两秒执行一次打印语句
    private IEnumerator WaitAndPrint(float waitTime)
    {
        while (true)
        {
            yield return new WaitForSeconds(waitTime);
            print("WaitAndPrint " + Time.time);
        }
    }
}

Unity 协程 API

上一篇下一篇

猜你喜欢

热点阅读