我正在使用协程设置如下的重复延迟。
在我的清醒中
StartCoroutine(RandomMove());
再往下走
IEnumerator RandomMove()
{
while (true)
{
// print(Time.time);
yield return new WaitForSeconds(foo);
// print(Time.time);
}
}
其中,“ foo”是我每次迭代都会更改的随机浮点值。
可以说foo是10秒,在延迟的途中,我需要重设延迟,以便它从10开始再次“倒计时”。
我将如何完成?我应该改用计时器吗?
最佳答案
我不喜欢现有的两个答案。这是我要做的:
杀死并重新启动协程:
我们将从killer_mech的答案的这一部分开始:
Coroutine myCoroutine;
void Awake() {
myCoroutine = StartCoroutine(RandomMove());
}
但是,我们将以其他方式处理其余问题。 killer_mech从不对引用进行任何操作,只是继续对其进行写操作。
这是我们正在做的:
public void resetRandomMove() {
StopCoroutine(myCoroutine);
myCoroutine = StartCoroutine(RandomMove());
}
每当您需要重置它时,都调用它。