有没有一种方法可以为Unity中除一个按钮之外的所有按钮创建Input.GetButtonDown?

时间:2020-05-09 10:32:53

标签: c# unity3d 2d

在游戏中,我想创建一个快速时间事件,如果按下了错误的按钮,则该事件可能会失败。但是我不知道该怎么做,所以每个按钮都会触发它。当然,除了在void Update中为每个按钮制作Keycode之外,肯定还有其他选择吧?

1 个答案:

答案 0 :(得分:0)

因此,如果我理解正确,则您希望每个按钮都以某种方式起作用,除了一个以外。我们称其为“错误的按钮”。然后,您可以通过按钮的名称或标签来区分该按钮。

如果错误的按钮标签不同,则可以像这样在Update()中比较标签:

private string WrongButtonTag = "wrongButton";
void Update()
{
   if(Input.GetButtonDown("yourKey") && !this.CompareTag(WrongButtonTag))
   {
      //add your code logic for correct buttons here
   }

}

您可能需要预先分配标签,例如,通过调用此函数:

private void AssignWrongButtonTag()
{
    this.tag = WrongButtonTag;
}

编辑:

评论后,我认为这是方法:您必须将所有按钮放入列表中,然后在Update函数中使用以下代码:

public List<GameObject> buttonList = new List<GameObject>();
void Update()
    {
       if(Input.GetButtonDown(<your input key here>)
       {
          foreach(GameObject button in buttonList)
          { 
              if(!this.CompareTag(WrongButtonTag))
              {
                  continue;
              }
              //add your code logic for correct buttons here
          }
       }
    }