这是我尝试使用协程的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {
void Update(){
StartCoroutine (Test());
print ("in update");
}
IEnumerator Test()
{
for(int i=0;i<1000;i++)
{
print(i);
yield return null;
}
}
}
我只是想检查正常函数在更新中的行为与使用协同程序之间的区别。我已经读过coroutines保留其局部变量的值。但我得到了奇怪的输出。
答案 0 :(得分:4)
您每{{}}}次来电都会开始新的协程。因此,越来越多的Update()
实例将并行运行,并且它们都会在迭代中的不同点 - 这就是为什么您的日志填满了不同的原因每帧编号(0,0 1,0 1 2,0 1 2 3等)
您应该做的是从Test()
方法而不是Start()
方法启动协程,因此它只会启动一次:
Update()
希望这有帮助!如果您有任何问题,请告诉我。