检测画布中按下了哪个UI按钮?

时间:2015-06-18 07:45:16

标签: button canvas unity3d unity3d-gui

我的UI上有10个按钮,我要检查哪个被触摸了。我使用以下逻辑,它工作正常,但现在我出于某种原因收到此错误:

void Start()
 {
     this.GetComponent<Button>().onClick.AddListener(() => 

                                                     { 

         if (this.name == "btnJogadores2")
         {
             print ("2 jogadores");
             jogadores = 2;
         }
         //QuantidadeJogadores(this.name);
         //QuantidadePartidas(this.name);
     }); 
 }

任何想法可能会发生什么?这是我的代码(附在画布上),我使用的是Unity版本5.1.0f3。如果您需要任何其他信息,我很乐意提供,提前感谢

mail {
    host = "smtp.gmail.com"
    port = 465
    username = "adityasoni051293@gmail.com"
    password = "aditya051293"
    props = ["mail.smtp.auth":"true",
             "mail.smtp.socketFactory.port":"465",
             "mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
             "mail.smtp.socketFactory.fallback":"false"]
  }

2 个答案:

答案 0 :(得分:4)

你不必按照自己的方式做到这一切。

更简单,更好的做法是为画布中的每个按钮创建10个单独的GameObject。然后为其中的所有按钮创建一个包含10个单独函数的脚本。将该脚本附加到画布上。然后在按钮GameObject上选择所需功能的脚本。下面的示例

void Start() { }
void Update() { }

public void button1()
{
    Debug.Log("Button3");
}

public void button2()
{
    Debug.Log("Button1");
}

public void button3()
{
    Debug.Log("Button3");
}

注意: button1,button2和button3是3个单独按钮的功能

然后在你的团结检查员里面: _See this sample image_

  1. 使用按钮功能选择脚本。
  2. 为您指定所需的方法按钮。
  3. 完成此操作后,您的场景和按钮将正确调用指定的方法。

答案 1 :(得分:1)

代码未经过测试,但它应该让您开始获取所有按钮。

void Start() {
        var buttons = this.GetComponents<Button> ();
        foreach(var button in buttons) {
            button.onClick.AddListener(() = > {
                if (this.name == "btnJogadores2") {
                    print("2 jogadores");
                    jogadores = 2;
                }
                //QuantidadeJogadores(this.name);
                //QuantidadePartidas(this.name);
            });
        }
    }

实际上很难区分按钮。 更实际的方法是制作10个GameObjects(画布之子)并将你的脚本附加到每个人身上。