代码之家  ›  专栏  ›  技术社区  ›  Luc Angevare

如何使bool在满足条件后仍然保持为true?

  •  0
  • Luc Angevare  · 技术社区  · 7 年前

    我正在试着做一个汽车驾驶脚本,但汽车只能在 E 被按下。。。

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

    我试过的:

        bool PersonInCar = false;
        PersonInCar=(Input.GetKey (KeyCode.E))||(PersonInCar==true)
    
        if (PersonInCar) {
    
    4 回复  |  直到 7 年前
        1
  •  3
  •   paxdiablo    7 年前

    如果(根据你的标题)你的意图是让变量在 条件 是真的,然后永远是真的,你只需要:

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

    第一次 Input.GetKey (KeyCode.E)) 变成现实, PersonInCar 会变成现实。那么不管 什么 价值 Input.GetKey(KeyCode.E)) 在那之后, 人格 将保持真实。

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

    你会注意到我也把你的支票改成了真的-你一般不应该把布尔人和真的或假的比较,因为他们是 意味 作为条件来读。见 Is there ever a reason to write "if (myBoolean == true)" in a JavaScript conditional? 想知道更多细节。


    如果相反(根据你的评论的可能解释),你希望你的车只能移动 虽然 里面有个人 按键,简单地说:

    if PersonInCar && Input.GetKey (KeyCode.E)) {
        WhateverDrivingEntails();
    }
    
        2
  •  2
  •   Naren Neelamegam    7 年前

    您正在将bool值重置为false(假设personicar是在条件之前本地声明的)。

    成为全局范围的人物(类成员)

        3
  •  0
  •   Aliaksei Futryn    7 年前

    这里不需要任何变量,如果你想让你的车总是在按下E后行驶,请使用以下解决方案:

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

    另外,我建议订阅按键事件,而不是直接识别按键。

        4
  •  0
  •   zacs    7 年前

    //首先,在窗体构造函数或窗体加载时注册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
       }
    }