Unity3d 第二次尝试时不运行协同程序?

Unity3d 第二次尝试时不运行协同程序?,unity3d,coroutine,ienumerator,Unity3d,Coroutine,Ienumerator,目前,我的OnGUI功能上有以下流程: void OnGUI() { //在此处处理添加列表中的项目 计数器=list.Count(); } 我有一段代码,当计数器值改变时,它运行一个函数 private IEnumerator协同程序=null; 专用整数计数器=0; 私有整数限制=5; 公共整数计数器 { 获取{返回this.counter;} 设置 { this.counter=值; if(this.counter==限制) { 如果(this.coroutine!=null){ret

目前,我的OnGUI功能上有以下流程:

void OnGUI()
{
//在此处处理添加列表中的项目
计数器=list.Count();
}
我有一段代码,当计数器值改变时,它运行一个函数

private IEnumerator协同程序=null;
专用整数计数器=0;
私有整数限制=5;
公共整数计数器
{
获取{返回this.counter;}
设置
{
this.counter=值;
if(this.counter==限制)
{ 
如果(this.coroutine!=null){return;}//已在运行
this.coroutine=StartProcess();
start例程(this.coroutine);}
}
}
StartProcess包含以下内容:

StartProcess()
{
成品率返回起始协议(流程1);
成品率返回起始方案(流程2);
}

在我的第一次运行中,一切都很顺利,但在我的第二次运行中,似乎我的计数器功能不再运行,即使我的条件满足?

当一个协同程序完成时,指向它的指针仍然有效,它不会重置为null,您可以保留一个指向一个失效协同程序的处理程序,只需在末尾添加=null,您应该会很好

当一个协同程序完成时,指向它的指针仍然有效,它不会重置为null,您可以保留一个处理程序到一个死的协同程序,只需在末尾添加=null,您应该会很好

在哪里将它设置回null
if(this.coroutine!=null){return;}//已经在运行了
ahh我明白了。因此,我可能应该在我的“yield return start例程(Process2);”之后添加“coroutine=null”。是吗?你应该做对你的代码正确的事情。似乎您不想在一个进程运行时启动另一个进程,但只有您知道为什么这样编写。是的,您需要在StartProcess结束时重置coroutine=null,您在哪里将其设置回null
if(this.coroutine!=null){return;}//已经在运行了
ahh我明白了。因此,我可能应该在我的“yield return start例程(Process2);”之后添加“coroutine=null”。是吗?你应该做对你的代码正确的事情。似乎您不想在一个进程运行时启动另一个进程,但只有您知道为什么这样编写。是的,您需要在StartProcess结束时重置coroutine=null