【发布时间】:2018-10-21 09:11:23
【问题描述】:
目前,我的 OnGUI 函数上有这个过程:
void OnGUI ()
{
// process here that adds item on list
Counter = list.Count();
}
我有这段代码在更改计数器值时运行一个函数。
private IEnumerator coroutine = null;
private int counter = 0;
private int limit = 5;
public int Counter
{
get{ return this.counter; }
set
{
this.counter = value;
if(this.counter == limit)
{
if(this.coroutine != null){ return; } // already running
this.coroutine = StartProcess();
StartCoroutine(this.coroutine); }
}
}
StartProcess 包含这个:
StartProcess ()
{
yield return StartCorotuine (Process1);
yield return StartCorotuine (Process2);
}
在我第一次运行时一切正常,但在我第二次运行时,即使满足我的条件,我的 Counter 函数似乎也不再运行?
【问题讨论】:
-
你在哪里把它设置回null?
if(this.coroutine != null){ return; } // already running -
啊,我明白了。所以我应该在'yield return StartCoroutine(Process2);'之后添加'coroutine = null'。对吗?
-
您应该为您的代码做正确的事情。似乎您不想在运行时启动另一个,但只有您知道为什么要这样写。
-
是的,你需要在 StartProcess 结束时重置 coroutine = null
标签: unity3d coroutine ienumerator