Bac*_*alo 2 c# coroutine unity-game-engine
我正在使用协程来设置重复延迟,如下所示。
在我清醒的时候我有
StartCoroutine(RandomMove());
Run Code Online (Sandbox Code Playgroud)
然后再往下
IEnumerator RandomMove()
{
while (true)
{
// print(Time.time);
yield return new WaitForSeconds(foo);
// print(Time.time);
}
}
Run Code Online (Sandbox Code Playgroud)
其中“foo”是一个随机浮点值,我会在每次迭代时更改它。假设 foo 是 10 秒,并且在延迟中,我需要重置延迟,以便它再次从 10 开始“倒计时”。
我将如何实现这个目标?我应该使用计时器吗?
我不喜欢现有的两个答案。这就是我要做的:
我们将从 Killer_mech 答案的这一部分开始:
Coroutine myCoroutine;
void Awake() {
myCoroutine = StartCoroutine(RandomMove());
}
Run Code Online (Sandbox Code Playgroud)
但我们将以不同的方式处理其余的事情。Killer_mech除了继续覆盖它之外,从未对该引用执行过任何操作。
这就是我们正在做的事情:
public void resetRandomMove() {
StopCoroutine(myCoroutine);
myCoroutine = StartCoroutine(RandomMove());
}
Run Code Online (Sandbox Code Playgroud)
任何需要重置的时候都可以调用它。
归档时间: |
|
查看次数: |
2482 次 |
最近记录: |