</pre><p><pre name="code" class="html">using UnityEngine;
using System.Collections.Generic;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.UI;
/// <summary>
/// 三种实现UGUI点击事件的方法
/// 1.继承基础接口,IPointerClickHandler
/// 2.使用Events和EventSystems来实现动态的设置点击事件
/// 3.使用Button控件来实现,通过委托实现
/// </summary>
public class OnClickObject : MonoBehaviour ,IPointerClickHandler{
public void OnPointerClick(PointerEventData eventDate)
{
print("test");
}
void Start()
{
var trigger = transform.gameObject.GetComponent<EventTrigger>();
if (trigger == null)
{
trigger = transform.gameObject.AddComponent<EventTrigger>();
}
//实例化triggers(由于API更新,原博客的不可用,所以就改成了现在这样的)
trigger.triggers = new List<EventTrigger.Entry>();
//定义需要绑定的事件类型,并设置回调函数
EventTrigger.Entry entry = new EventTrigger.Entry();
//设置事件类型
entry.eventID = EventTriggerType.PointerClick;
//设置回调函数
entry.callback = new EventTrigger.TriggerEvent();
UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll);
entry.callback.AddListener(callback);
//添加事件
trigger.triggers.Add(entry);
var button = transform.gameObject.GetComponent<Button>();
if (button != null)
{
//先移除所有的
button.onClick.RemoveAllListeners();
button.onClick.AddListener(TestClick);
}
}
public void TestClick()
{
print("test2");
}
public void OnScriptControll(BaseEventData arg0)
{
print("test1");
}
}