首页 > 代码库 > Unity NGUI监听按钮点击事件的三种方法

Unity NGUI监听按钮点击事件的三种方法

 NGUI版本:3.6.5

1、直接实现OnClick方法:

  创建一个脚本,在脚本中实现OnClick()方法,绑定该脚本到按钮上,点击时就会实现OnClick函数内容;

2、使用SendMessage:

  选择按钮后,打开Component——NGUI——Interaction,选择Button Message,为按钮添加一个UIButton Message组件:

  然后设置UIButton Message中的参数即可:

    Target:接收按钮消息的游戏对象;

    Function Name:接收按钮消息的方法,拥有这个方法的脚本必须绑定在上面Target对象身上;

    Trigger:触发的事件,OnClick显然是一次点击。

    Include Children :是否让该对象的所有子对象也发送这个点击事件。

  即设置一个空对象,将所有的消息写在一个脚本中,赋值给空对象,给控件添加UIButton Message组件,将空对象拉入组件的Target,选择相应的Function Name(比如OnClick函数)即可。对于多个按钮来说,只需添加UIButton Message组件,选择相应的函数即可实现。

Test4脚本代码:

using UnityEngine;using System.Collections;public class test4 : MonoBehaviour{    // Use this for initialization    void Start()    {    }        // Update is called once per frame    void Update()    {        }    void Button1Click()    {        Debug.Log("按钮1~~");    }    void Button2Click()    {        Debug.Log("按钮2~~");    }    void Button3Click()    {        Debug.Log("按钮3~~");    }}
Test4

 

3、使用UIListenner:

  这是推荐使用的方法。

  新建三个按钮:

  

  把如下代码放到任意脚本中(放在类中没有测试过):

    void Awake()    {        // 获取按钮对象        GameObject button1 = GameObject.Find("UI Root/Camera/Anchor/Panel/button1");        // 设置这个按钮的监听,指向本类的Button1Click方法中        UIEventListener.Get(button1).onClick = ButtonClick;        GameObject button2 = GameObject.Find("UI Root/Camera/Anchor/Panel/button2");        UIEventListener.Get(button2).onClick = ButtonClick;        GameObject button3 = GameObject.Find("UI Root/Camera/Anchor/Panel/button3");        UIEventListener.Get(button3).onClick = ButtonClick;    }    void ButtonClick(GameObject button)    {        Debug.Log("点击了"+button.name);    }
View Code

  在这里创建一个脚本,添加上述代码,脚本绑定到Main Camera中,成功实现按钮的点击事件;

  参考链接:http://www.verydemo.com/demo_c352_i20841.html

注:

  参考链接中说明需要先为按钮添加一个UIEvent Listenner组件,即选择按钮后,打开Component——NGUI——Internal——Event Listener,为按钮添加一个UIEvent Listener组件,但是这里测试没有添加该组件也可以运行。如果无法实现按钮点击事件,可以添加该组件测试一下。添加UIEvent Listener组件操作如图: