【问题标题】:Is there a way to make a Input.GetButtonDown for all buttons but one in Unity?有没有办法为除 Unity 中的一个按钮之外的所有按钮制作 Input.GetButtonDown ?
【发布时间】:2020-05-09 10:32:53
【问题描述】:

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

【问题讨论】:

    标签: c# unity3d 2d


    【解决方案1】:

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

    如果错误按钮的标签不同,您可以像这样比较 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
              }
           }
        }
    

    【讨论】:

    • 我可能在写问题时犯了一个错误。我需要所有按钮,但一个被认为是错误的,对不起。是否有一个命令可以触发每个按钮的“Input.GetButtonDown(Keycode.)”,但不是正确的?
    • 那个按钮和其他按钮有什么不同?
    • 它显示了一个图像,表明玩家通过了快速时间事件
    • 感谢您的帮助,但究竟如何才能将按钮添加到列表中?
    • 当您打开 Unity 编辑器时,找到您将此脚本附加到的对象。在该脚本下,您将看到一个名为“buttonList”的新字段(如果您从上面复制了我的代码)。然后,您可以设置列表的大小(长度),这将为位于其下方的按钮创建插槽。然后,您可以将要使用的每个按钮拖放到此列表对象下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2023-03-30
    • 2023-02-13
    • 2018-02-28
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多