按钮监听事件

按钮监听事件,第1张

接下来我将从按钮和图片两个方面写按钮的监听事。

先说明一下按钮的监听事件

//定义按钮

 public Button btn

//添加监听方法

    void Start ()

    {

        btn.GetComponent  ().onClick.AddListener (TestAction)

    }

  voidTestAction ()

    {

     //写监听事件

    }

在unity场景中创建的按钮身上添加相应的按钮事件即可。

----------------------------------------------------------------------------------------------------------------------------

如何将一张普通的Image写成按钮监听事件呢?

//定义一张图片Image  

GameObject Img

//查找 

Img= transform.Find("Image").gameObject

//添加监听事件

EventTriggerListener.Get(Img).onClick = (GameObject go) =>

  {

       //监听事件内容 

  }

 此时Unity中一个Image物体相当于一个按钮,可以做相应的事件处理了。

for (int i = 0i <Btn_Arr.Lengthi++) {

Btn_Arr[i].onClick.AddListener(delegate { OnClick(i)})

}

这个循环实际上是通过委托进行了一次闭包 *** 作:delegate委托的内部变量i使用了外部循环的变量i,这就导致了i的实际作用域已经随外部变化而迁移。你端代码的实际效果就是所有的按钮最终添加的响应事件都指向了 OnClick(Btn_Arr.Length-1),因为这是i在这个循环内的最终值。

要实现你的要求其实也很简单,稍微改一下就好:

for (int i = 0i <Btn_Arr.Lengthi++) {

Button btn =Btn_Arr[i].

btn .onClick.AddListener(delegate { OnClick(btn )})

}

//.....

private void OnClick(Button btn)

{

int num= Array.IndexOf(Btn_Arr,btn)

switch (num)

{

//......

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11593517.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存