标题看起来可能看起来不确定,但它是一回事,在谈论Unity引擎时,它的解释不同,以防任何Unity兽医要查看我的帖子。
在Unity引擎中,某些方法在一个类中执行特定任务,其中一个是Update()
方法,它为每一帧循环(因此标题中的循环表达式)。
我的想法是,我将在此循环中有一个表达式,等待用户单击一个键,这将依次切换一个布尔变量。 我试图以多种不同的方式实现这一点,但我现在的做法似乎是最有希望的。
if (Input.GetKeyDown(KeyCode.Delete))
{
if (this.modGodspeed)
{
this.speedMult = 1f;
this.godSpeedToggled = "OFF";
this.modGodspeed = false;
}
if (!this.modGodspeed)
{
this.speedMult = 5f;
this.godSpeedToggled = "ON";
this.modGodspeed = true;
}
}
在启动过程中,boolean初始化为false,默认情况下显示为OFF
,当我单击删除键时,第一部分工作,并显示ON
和{{ 1}}变量设置为5.问题是它不会再次关闭。再次单击“删除”不会执行任何操作。
代码说明:
speedMult
= Unity库的一部分,读取键输入。
Input.GetKeyDown(Keycode.Delete)
=布尔我正在谈论。
modGodSpeed
=要切换的Speedmultiplier。
speedMult
=字符串变量,向用户显示是否切换了神速。
答案 0 :(得分:3)
您的代码正是您所写的内容。
这就是发生的事情:
1 。if (this.modGodspeed)
将执行并将modGodspeed
设置为false
。
<强> 2 即可。它下面的if (!this.modGodspeed)
将在同一帧中执行,并将modGodspeed
设置为true
。
3 。当您再次按下删除键(KeyCode.Delete)
时,这将重复。
if
语句,则 #2 不应执行。您需要将if
语句仅检查一次,以便modGodspeed
变量为true
时,其下方的另一个if
语句赢了再次检查。这就是if
,else if
和else
语句的原因。
在第二个if
声明中使用其他if
:
if (this.modGodspeed)
{
....
}
else if (!this.modGodspeed)
{
...
}
或者只是使用else
语句,因为modGodspeed
变量是一个布尔变量,可以是true
或false
。
if (this.modGodspeed)
{
....
}
else
{
....
}