【发布时间】:2020-10-28 16:08:49
【问题描述】:
我在网上只能找到“如何检查协程是否正在运行”,这不是我想要的。
如果我有协程的话就说
yield return new WaitUntil(()=> SomeBool);
有没有办法知道这个语句是否仍然“待定”?
因为如果我使用布尔技巧,例如
isRunning = true;
yield return new WaitUntil(()=>SomeBool);
isRunning = false;
如果我在 SomeBool 设置为 true 之前停止协程,isRunning 标志将“始终”为 true。
我测试过确实是这样! yield 语句之后的任何内容都不会运行!
而且由于它从未运行过,任何检查都是无用的,无论是isRunning 还是SomeBool。
所以“检查协程是否还在运行”的功能失败了!
有没有办法“做正确的工作”?
所以如果我最终从另一部分代码中将SomeBool 设置为true,我知道还有一个WaitUntil 在等待它吗?如果不是,那么以某种方式重新启动协程,这样它就不会“永远卡住并导致游戏崩溃”!?
非常感谢!
【问题讨论】:
-
"如果我在 SomeBool 设置为 true 之前停止协程,isRunning 标志将“始终”为 true,对吗?"是什么让你认为是这样的?您是否真的进行了测试并了解实际发生了什么?
-
其实,我做到了!就是这样! yield 语句后的“ANYTHING”永远不会运行!
-
你已经可以访问
SomeBool,你不能看看吗? -
@Immersive 因为...如果
SomeBool是false,isRunning是true,如果你现在停止协程,'isRunning` 仍然是true而协程已经停止了!错误的!而如果SomeBool是true,那么协程就结束了,但是SomeBool还是true,错了!让我看看如何改写我的问题。 -
@Servy 问题是否已更新到足够清晰?我觉得现在说得通了。