即使条件不成立,我的if
语句也会运行。变量已经在第一个循环中更改过,但是由于getkeydown事件,它会不断循环4次
仅介绍一下我正在Unity中使用C#进行创建,并且与其他按帧运行的进程不同,因此每个帧将再次运行代码。 所以基本上我正在验证用户是否通过了一种情况,否则,代码将输入if语句并为数组索引(situacao [8])提供新值,我的问题是由于GetKeyDown它将运行4次,直到框架更新(或所以我读另一篇文章)。 这应该很简单,因为我将值更改为1,因此不应再次在if中输入。
if (Input.GetKeyDown(KeyCode.Space))
{
meuEstado = estado.Cela;
}
else if (Input.GetKeyDown(KeyCode.G))
{
print(situacao[8]);
texto.text = "He look for the Window.";
if (situacao[8] != 1)
{
texto.text += "\nand notice there is a bird there!";
situacao[8] = 1;
}
}
打印输出为0 - 1 - 1 - 1
,但应仅给出0
。它没有显示任何控制台错误。
问题发现:
我有4个文本框与同一个脚本相关联,所有这些文本框也是变量分配的。
解决方案:
只需将脚本添加到一个对象并在其中关联其他对象
答案 0 :(得分:3)
在打印之前,请检查该值是否为1,因此它将始终打印situacao[8]
的当前值,该值是第一次打印0,然后每次打印1。
如果只希望在situacao[8]
不为1时打印,请考虑将其移至if语句中,如下所示:
else if (Input.GetKeyDown(KeyCode.G))
{
texto.text = "He look for the Window.";
if (situacao[8] != 1)
{
print(situacao[8]);
texto.text += "\nand notice there is a bird there!";
situacao[8] = 1;
}
}
在仅一个游戏对象而不是4个脚本上包含此脚本,将导致第一次按下仅打印“ 0”,而不再按下。