是一个while循环只能产生暂停函数的最佳实践吗?

时间:2015-05-15 07:55:39

标签: c# unity3d

我有一个调用第一个对话框的功能,然后需要等待用户按空格键才能显示第二个对话框。我可以使用协程轻松完成此任务,通过在一个while循环中产生如下:

message.PlayMessage();

    while (Input.GetKeyDown (KeyCode.Space) == false) {
        yield return null;
    }

message.PlayMessage(2);

我的问题是:这是一个奇怪的解决方案吗?我觉得可能有一个实际的功能,我担心这可能无缘无故地占用了大量的系统资源。

1 个答案:

答案 0 :(得分:5)

它会在一帧中被调用一次,而不是昂贵的。 并且使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());