【发布时间】:2020-11-04 12:57:22
【问题描述】:
我发现了很多关于协程试图解决这个问题的信息(waitUntil()、while 循环、不同的 yield 变体等),但我对它们的问题是它仍然得到之后的其余代码无论协程中的代码是否已经完成或者它无限循环并冻结 Unity 编辑器,都执行。例如,即使没有按下任何按钮,以下代码也会打印调试消息(在协程仍在等待按下按钮以完成其代码块本身的情况下)。
ChoiceButtons.enableButtons();
StartCoroutine(WaitUntilButtonPress());
UnityEngine.Debug.Log("It skipped it.");
ChoiceButtons.setButtonPressed(false);
ChoiceButtons.disableButtons();
我需要能够停止所有进一步的代码执行,直到特定函数返回 true。是否有我刚刚错过的特定功能来完成此操作或我必须设置循环的特定方式(可能使用一些古怪的东西,如 SpinWait.SpinUntil() 之类的线程函数?)。老实说,我完全不知所措,因为它似乎肯定会在协程中拥有自己的功能,但我找不到任何东西
【问题讨论】:
-
将您所在的方法转换为协程(返回值为
IEnumerator),然后使用StartCoroutine调用它,然后在此处显示的代码中,调用WaitUntilButtonPress()而不使用@ 987654326@ -
如果@derHugo 的回答有帮助,请考虑accepting it