您的位置:首页 > 产品设计 > UI/UE

UGUI中使用代码动态绑定触发事件

2017-05-10 14:29 519 查看
         前言:UGUI系统中官方提供了一种Button控件,Button封装了官方提供的一套OnClick事件,如果该GameObject还需要支持按下,移入,移出等事件呢?这时候我们就需要添加EventTrigger组件。如果我们要给一个文本或是一张图片,添加鼠标响应事件,通过EventTrigger组件就变得易如反掌。今天我们实现的是动态添加EventTrigger组件并且动态添加触发事件。

运行前:



运行后:



直接贴出代码,因为注释写的很详细

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Events;

public class newtest : MonoBehaviour {
// Use this for initialization
void Start ()
{
var trigger = transform.gameObject.GetComponent<EventTrigger>();
if (trigger == null)
trigger = transform.gameObject.AddComponent<EventTrigger>();

// 实例化delegates(trigger.trigger是注册在EventTrigger组件上的所有功能)
trigger.triggers = new List<EventTrigger.Entry>();

// 在EventSystem委托列表中进行登记
EventTrigger.Entry entry = new EventTrigger.Entry();
// 设置 事件类型
entry.eventID = EventTriggerType.PointerClick;
// 实例化回调函数
entry.callback = new EventTrigger.TriggerEvent();
//UnityAction 本质上是delegate,且有数个泛型版本(参数最多是四个),一个UnityAction可以添加多个函数(多播委托)
UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll);
//将方法绑定在回调上(给回调方法添加监听)
entry.callback.AddListener(callback);
// 添加事件触发记录到GameObject的事件触发组件
trigger.triggers.Add(entry);
}

public void OnScriptControll(BaseEventData arg0)
{
Debug.Log("Test Click");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐