在Unity中,是否有办法让Input.GetButtonDown适用于所有按钮,而不是一个按钮?

问题描述 投票:-1回答:1

在一个游戏中,我想做一个快速的时间事件,可以失败,应该按错按钮。但我不知道如何才能让每个按钮都能触发它。当然,除了在void Update中为每个按钮制作Keycode之外,肯定还有其他选择,对吗?

c# unity3d 2d
1个回答
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
          }
       }
    }
© www.soinside.com 2019 - 2024. All rights reserved.