我试图找出一种干净的方法来循环循环一个循环的协同线,然后当协同线成功的时候终止,如果不成功的话,它会重新调用自己并产生双倍的秒数。
public IEnumerator ReoccurringCoroutine(IEnumerator coroutineToRun)
{
int timeToWait = 1;
bool isSuccessful = false;
while(!isSuccessful)
{
StartCoroutine(coroutineToRun(taskSuccessful =>
{
isSuccessful = taskSuccessful;
}));
yield return new WaitForSeconds(timeToWait);
timeToWait *= 2;
}
}我有上面的代码,但是我想不出如何重新运行自己,我可以在coroutineToRun的回调中调用coroutineToRun()吗,还是超级混乱?一定有一个更干净的方法来做这件事。任何帮助都将不胜感激。
发布于 2016-01-22 08:49:40
public IEnumerator ReoccurringCoroutine(IEnumerator coroutineToRun)
{
int timeToWait = 1;
bool isSuccessful = false;
while(!isSuccessful)
{
yield return StartCoroutine(coroutineToRun(taskSuccessful =>
{
isSuccessful = taskSuccessful;
}));
yield return new WaitForSeconds(timeToWait);
timeToWait *= 2;
}
}这个想法是在收益率回报StartCoroutine中。ReoccuringCoroutine正在coroutineToRun上等待完成。一旦内部协同线完成,它将返回控制到ReoccuringCoroutine。
实际上,您正在使用WaitForSeconds执行相同的过程。
https://stackoverflow.com/questions/34934806
复制相似问题