一旦满足条件,并且满足条件后仍如何,我如何使布尔值变为真?

时间:2018-07-19 12:57:38

标签: c# boolean

我正在尝试编写汽车驾驶脚本,但是只有在按下E之后,汽车才能行驶...

条件:
(Input.GetKey(KeyCode.E))

我尝试过的事情:

    bool PersonInCar = false;
    PersonInCar=(Input.GetKey (KeyCode.E))||(PersonInCar==true)

    if (PersonInCar) {

4 个答案:

答案 0 :(得分:3)

如果(按照您的标题)您的意图是一旦您的 condition 为true,然后使该变量为true,然后永远保持为true,则只需要:

PersonInCar = PersonInCar || Input.GetKey (KeyCode.E));

Input.GetKey (KeyCode.E))第一次为真时,PersonInCar将为真。然后,无论之后Input.GetKey (KeyCode.E))给出什么 值,PersonInCar都将保持为真。

您还需要确保nexer以其他某种方式将其显式更改回false,除非出于某些原因需要这样做。换句话说,如果您在当前位置创建它,它将始终在此处初始化。您可能希望将其移出该范围(例如在构造上初始化的类的成员变量)。

您会注意到我也更改了对true的检查-通常不应将布尔值与true或false进行比较,因为它们是 meant 作为条件被读取。有关更多详细信息,请参见Is there ever a reason to write "if (myBoolean == true)" in a JavaScript conditional?


如果相反(根据您对评论的可能解释),您只想让汽车在 内移动,而 键被按下,那很简单:

if PersonInCar && Input.GetKey (KeyCode.E)) {
    WhateverDrivingEntails();
}

答案 1 :(得分:2)

您正在将bool值重置为false(假设PersonInCar在条件之前就已在本地声明)。

将PersonInCar设置为全局范围(类的成员)

答案 2 :(得分:0)

这里不需要任何变量,如果您希望在按E后汽车始终行驶,请使用以下解决方案:

if (Input.GetKey (KeyCode.E))
{
    Drive()
}

此外,我建议订阅按钮事件,而不要直接识别所按下的键。

答案 3 :(得分:0)

//首先,在窗体构造函数或窗体加载上注册KeyDown事件

this.KeyDown += new KeyEventHandler(OnKeyDown);

现在编写一个处理程序方法来处理按键事件。

private void OnKeyDown(object sender, KeyEventArgs e)
{ 
 switch (e.KeyCode)
 {
    case Keys.E:
        DriveTheCar();
        break;

    case Keys.C: // It could be any key that end the application
        Application.Exit();
        break;
 }
}

最后是开车的方法。

private void DriveTheCar()
{
   if (PersonInCar) {
        // drive the car
   }
}