我的玩家角色产卵多种颜色的波,并试图检测即将到来的对象.这里是整体想法的小快照。
我已经产生了粉红色和蓝色的颜色波,用于测试目的,我已经使用IEnumerator(线程)来生成每个颜色波。我使用IEnumerator(线程)来生成每个颜色波,现在两个enumeratorsthreads分别工作,并正常完成了他们的工作。我对它们的工作没有任何问题。
现在我需要一些标识符或索引来唯一标识每个运行的线程,如何用c#来管理这个我不知道!
你可以通过创建一个列表来实现 IEnumerator
对象,如
List<IEnumerator> coroutines = new List<IEnumerator>();
然后将每个coroutine添加到您的列表中
void Start()
{
coroutines.Add(CoroutineOne());
coroutines.Add(CoroutineTwo());
foreach (var c in coroutines)
{
StartCoroutine(c);
}
}
如果你添加一个 yield return null
的最后一行,然后你可以用以下方法检查它们是否达到了这个状态 IEnumerator.Current
IEnumerator CoroutineOne()
{
for(int i = 0; i < 5; i++)
{
Debug.Log("one" + i);
yield return new WaitForSeconds(1);
}
yield return null;
}
然后你在哪里管理他们
void Update()
{
for (int i = 0; i < coroutines.Count; i++)
{
if(coroutines[i].Current == null)
{
Debug.Log("Corutine " + i +" has finished");
}
}
}
编辑。
你可以用这个来管理你的活动的coroutine。
coroutines.RemoveAll(x => x.Current == null);
这将使你的列表中只保留活动的,你可以使用 coroutine.Count
以获取一次有多少个有效索引。