【发布时间】:2021-12-08 07:33:34
【问题描述】:
我在 VR 中编写一个任务,用户听到带有一定数量数字的音频文件,然后需要按一个键。如果他做得对,那么他应该按“r”,然后播放一个多一个数字的音频文件。如果他做错了,他应该按“w”,如果这是他在正确答案之后的第一个错误答案,将播放一个与以前具有相同数量的数字的音频文件。如果他做错了并且在此之前已经做错了,那么数字的数量就会减少一。
总共会有 10 个音频文件,这就是我决定使用 for 循环的原因。
但现在我不知道如何让 for 循环等待用户输入。我还读到,当您必须等待用户输入但我不知道我还能做什么时,使用 for 循环通常不是上帝。
到目前为止,这是我的代码:
IEnumerator playDSBtask()
{
bool secondWrong = false;
fillList();
for (int i = 0; i < 10; i = i + 1)
{
List<AudioSource> x = chooseList(score);
AudioSource myAudio = x[0];
float duration = myAudio.clip.length;
myAudio.GetComponent<AudioSource>();
myAudio.Play();
yield return new WaitForSeconds(duration + 5);
if (Input.GetKeyDown("r"))
{
score++;
secondWrong = false;
}
else if (Input.GetKeyDown("f") && secondWrong == false)
{
secondWrong = true;
}
else if (Input.GetKeyDown("f") && secondWrong == true)
{
score--;
}
x.Remove(myAudio);
}
}
但这不起作用,因为如果 if 或 else if 语句都不为真并因此执行,则 for 循环将继续。
【问题讨论】:
标签: c# for-loop unity3d user-input