C# while循环是否只产生暂停函数的最佳实践?
我有一个函数调用第一个对话框,然后需要等待用户按下空格键,然后显示第二个对话框。通过在while循环中让步,我可以通过协同程序轻松实现这一点,如下所示:C# while循环是否只产生暂停函数的最佳实践?,c#,unity3d,C#,Unity3d,我有一个函数调用第一个对话框,然后需要等待用户按下空格键,然后显示第二个对话框。通过在while循环中让步,我可以通过协同程序轻松实现这一点,如下所示: message.PlayMessage(); while (Input.GetKeyDown (KeyCode.Space) == false) { yield return null; } message.PlayMessage(2); 我的问题是:这是一个奇怪的解决方案吗?我觉得这可能有一个实际的函数,
message.PlayMessage();
while (Input.GetKeyDown (KeyCode.Space) == false) {
yield return null;
}
message.PlayMessage(2);
我的问题是:这是一个奇怪的解决方案吗?我觉得这可能有一个实际的函数,我担心这可能会无缘无故地占用大量的系统资源。它会在一个帧中调用一次,不会很昂贵。 使等待功能更加方便
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());
每帧调用一次,不贵。 使等待功能更加方便
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());
我认为这相当于Unity的wait,它不应该使用太多的资源,我认为这很好。因为协程不会启动任何新线程。只需检查每个帧的
Input
。我认为这相当于Unity的wait
,不应该使用太多资源。我认为这很好。因为协程不会启动任何新线程。只需检查每一帧的Input
。