是一个while循环,它只产生暂停函数的最佳实践

本文关键字:暂停 函数 最佳 一个 循环 while | 更新日期: 2023-09-27 17:49:15

我有一个函数,它调用第一个对话框,然后需要等待用户按下空格键才能显示第二个对话框。我可以用协程轻松地完成这一点,只需在while循环中生成如下所示:

message.PlayMessage();
    while (Input.GetKeyDown (KeyCode.Space) == false) {
        yield return null;
    }
message.PlayMessage(2);
我的问题是:这是一个奇怪的解决方案吗?我觉得这可能有一个实际的功能,我担心这可能会无缘无故地消耗大量的系统资源。

是一个while循环,它只产生暂停函数的最佳实践

它将在一个框架中调用一次,不昂贵。并且使Wait功能更方便。

    IEnumerator MyMethod() {
        message.PlayMessage();
        yield return StartCoroutine(WaitForKeyDown(KeyCode.Space));
        message.PlayMessage(2);
    }
    IEnumerator WaitForKeyDown(KeyCode keyCode)
    {
        while (!Input.GetKeyDown(keyCode))
            yield return null;
    }

和电话。

StartCoroutine(MyMethod());