[Unity3D——用代码说明一切] UGUI:用代码添加事件监听

两种常用UGUI代码添加

一.控件上的自带事件 如Button

1).得到对象上的 UGUI对应脚本 Button脚本

2).通过脚本上的

    获取的Button脚本.onClick.AddListener(函数名);

    获取的Toggle脚本.onValueChanged.AddListener(函数名);

    获取的Input脚本.onEndEdit.AddListener(函数名);

    等等 自带的委托事件  进行添加

 

二.通过EventTrigger添加

1).为对应控件添加 EventTrigger

2).创建一个 EventTrrigger.Entry 改变其中的 eventID 并且添加相应函数 callback.AddListener(响应函数名)

3).为对应EventTrigger 添加 EventTrrigger.Entry

 

 

注意: eventID 类型为 EventTriggerType 其为响应事件的枚举变量

      callback.AddListener(函数名) 此处添加的函数 必须带一个BaseEventData的参数

 

直观的代码说明:

 

public class UGUI_Event : MonoBehaviour
{
    void Awake()
    {
        //方法一:控件上的自带事件
        //1-在整个场景中找到按钮对象
        //2-如果该脚本用来表示面板 可以通过找到面板的子对象的形式找到控件
        //   Button btn = this.transform.Find("按钮控件名").GetComponent();
        //3-使用UGUI控件类  需要引用UnityEngine.UI
        //4-不同的控件有不同的自带事件监听事件  除了以下3种   InputField控件等其它控件存在类似事件
        Button btn = GameObject.Find("控件名").GetComponent();//按钮
        btn.onClick.AddListener(BtnClick);
        
        Toggle toggle = GameObject.Find("控件名").GetComponent();//单选多选框
        toggle.onValueChanged.AddListener(ToggleChange);

        Slider slider = GameObject.Find("控件名").GetComponent();//拖动条
        slider.onValueChanged.AddListener(SliderChange);


        //方法二:通过EventTrigger添加
        //1-找到想要添加自定义事件的对象
        //2-为他们添加EventTrigger脚本 添加EventTrigger需要引用UnityEngine.EventSystems
        //3-为EventTrigger添加监听事件
        GameObject control = GameObject.Find("控件名");//找到对象可以有多种方式 自选
        EventTrigger eventTrigger = control.AddComponent();
        //新建事件
        EventTrigger.Entry entry = new EventTrigger.Entry();
        //UI事件类型
        entry.eventID = EventTriggerType.PointerClick;
        //添加响应函数
        entry.callback.AddListener(EventTriggerClick);
        //将事件对象压入eventTrigger的triggers中
        eventTrigger.triggers.Add(entry);

        //额外知识点:如何添加自定义参数的事件响应函数?
        //1-自定义一个UnityAction委托
        //2-需要引入UnityEngine.Events
        UnityAction callBack = new UnityAction(
            delegate
            {
                EventTriggerCustomClick("我要日天",6666);
            });
        //新建事件
        EventTrigger.Entry entry2 = new EventTrigger.Entry();
        //UI事件类型
        entry.eventID = EventTriggerType.PointerClick;
        //添加响应函数
        entry.callback.AddListener(callBack);
    }


    //按钮点击时响应函数
    private void BtnClick()
    {

    }

    //多选单选框选中值改变时响应函数
    private void ToggleChange(bool changeValue)
    {

    }

    //拖动条改变是
    private void SliderChange(float value)
    {

    }

    //自定义事件的响应函数 需要传入一个BaseEventData的参数
    private void EventTriggerClick(BaseEventData data)
    {

    }
    //自定义事件监听的自定义参数响应函数
    //参数类型 个数 都可以自己定义
    private void EventTriggerCustomClick(string str,int i)
    {

    }
}

 

你可能感兴趣的:(Unity3D,C#)