Есть ли способ создать Input.GetButtonDown для всех кнопок, кроме одной, в Unity? - PullRequest
0 голосов
/ 09 мая 2020

В игре, которую я создаю, я хочу сделать быстрое временное событие, которое может потерпеть неудачу, если будет нажата не та кнопка. Но я не знаю, как сделать так, чтобы каждая кнопка запускала его. Разумеется, должна быть альтернатива созданию Keycode для каждой кнопки в void Update, верно?

1 Ответ

0 голосов
/ 09 мая 2020

Итак, если я правильно понимаю, вы хотите, чтобы каждая кнопка действовала каким-то образом, кроме одной. Назовем это «неправильной кнопкой». Затем вы можете отличить guish эту кнопку от имени или тега.

Если тег неправильной кнопки отличается, вы можете сравнить тег в 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;
}

Edit:

После комментария, я думаю, это способ go: Вы должны поместить все свои кнопки в список, а затем использовать этот код в функции обновления:

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
          }
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...