首页 > 代码库 > 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~~"); }}
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); }
在这里创建一个脚本,添加上述代码,脚本绑定到Main Camera中,成功实现按钮的点击事件;
参考链接:http://www.verydemo.com/demo_c352_i20841.html
注:
参考链接中说明需要先为按钮添加一个UIEvent Listenner组件,即选择按钮后,打开Component——NGUI——Internal——Event Listener,为按钮添加一个UIEvent Listener组件,但是这里测试没有添加该组件也可以运行。如果无法实现按钮点击事件,可以添加该组件测试一下。添加UIEvent Listener组件操作如图: