版权声明:快乐源于分享,转载请附链接,,, https://blog.csdn.net/Czhenya/article/details/82954859
创建自己的EventTriggerListener 类,继承自EventTrigger,,,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class EventTriggerListener : UnityEngine.EventSystems.EventTrigger
{
public delegate void VoidDelegate(GameObject go);
public VoidDelegate onClick;
public VoidDelegate onSelect;
public VoidDelegate onBegainDrag;
public VoidDelegate onDown;
public VoidDelegate onUp;
public VoidDelegate onPress;
public VoidDelegate DesPress;
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);
}
}
public override void OnSelect(BaseEventData eventData)
{
if (onSelect != null) onSelect(gameObject);
}
public override void OnBeginDrag(PointerEventData eventData)
{
if (onBegainDrag != null) onBegainDrag(gameObject);
}
//public override void OnPointerDown(PointerEventData eventData)
//{
// if (onDown != null) onDown(gameObject);
//}
//public override void OnPointerUp(PointerEventData eventData)
//{
// if (onUp != null) onUp(gameObject);
//}
public override void OnPointerDown(PointerEventData eventData)
{
if (onPress != null)
{
onPress(gameObject);
}
}
public override void OnPointerUp(PointerEventData eventData)
{
if (DesPress != null)
{
DesPress(gameObject);
}
}
}
将上面的代码放到自己的项目中,就可以做监听按钮事件了,
在有UGUI的组件的游戏物体都可以使用,,例子如下:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Events;
public class UIMain : MonoBehaviour {
private Button button;
private Image image;
void Start ()
{
button = this.GetComponent<Button>();
image = this.GetComponent<Image>();
EventTriggerListener.Get(button.gameObject).onClick =OnButtonClick;
EventTriggerListener.Get(image.gameObject).onClick =OnButtonClick;
}
private void OnButtonClick(GameObject go){
//在这里监听按钮的点击事件
if(go == button.gameObject){
Debug.Log ("DoSomeThings");
}
}
}