using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
/// <summary>
/// 自动添加UI监听事件工具类
/// </summary>
public class EventTriggerListener : UnityEngine.EventSystems.EventTrigger
{
public delegate void VoidDelegate(GameObject go);
public VoidDelegate onClick;
public VoidDelegate onDown;
public VoidDelegate onEnter;
public VoidDelegate onExit;
public VoidDelegate onUp;
public VoidDelegate onSelect;
public VoidDelegate onUpdateSelect;
static public EventTriggerListener Get(GameObject go)
{
EventTriggerListener listener = go.GetComponent<EventTriggerListener>();
if (listener == null) listener = go.AddComponent<EventTriggerListener>();
return listener;
}
public override void OnPointerClick(PointerEventData eventData)
{
if (onClick != null) onClick(gameObject);
Debug.Log("111111111");
}
public override void OnPointerDown(PointerEventData eventData)
{
if (onDown != null) onDown(gameObject);
}
public override void OnPointerEnter(PointerEventData eventData)
{
if (onEnter != null) onEnter(gameObject);
}
public override void OnPointerExit(PointerEventData eventData)
{
if (onExit != null) onExit(gameObject);
}
public override void OnPointerUp(PointerEventData eventData)
{
if (onUp != null) onUp(gameObject);
}
public override void OnSelect(BaseEventData eventData)
{
if (onSelect != null) onSelect(gameObject);
}
public override void OnUpdateSelected(BaseEventData eventData)
{
if (onUpdateSelect != null) onUpdateSelect(gameObject);
}
}
//ui按钮点击事件管理类
public class UI_Button : MonoBehaviour{
//按钮物体列表
public List<GameObject> go_list;
void Start()
{
foreach (GameObject item in go_list)
{
EventTriggerListener.Get(item).onClick = OnButtonClick;
}
}
public void OnButtonClick(GameObject go)
{
//禁用自身的组件
go.GetComponent<Button>().enabled = false;
go.GetComponent<Button>().interactable = false;
//运行方法
}
}
每次点击按钮,运行事件前都先禁用相关的按钮组件,以防在事件没有运行完,误操作再次点击,
奇怪的是明明组件都禁用了,点击按钮还是能运行事件,在Console里还会输出Debug.Log("111111111");
请问这是为什么,谢谢!