unity 里面的协程流程
- 开始协程
StartCoroutine("DoSomething");
- 执行到
yield return
时,执行ruturn
后面的语句 - 之后就结束了,然后下一帧时继续执行
- 下一帧的时候从
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);
}
}
}
网友评论