Unity UGUI 事件监听器:UIEventListener

这段代码定义了一个名为 UIEventListener 的类,用于监听用户在 UI 元素上的操作。它继承了 MonoBehaviour 类,并实现了 IPointerDownHandler, IPointerClickHandler, IPointerUpHandler 接口,以便监听 PointerDown, PointerClick, PointerUp 事件。

代码示例:

public delegate void PointerEventHandler(PointerEventData eventData);

/// <summary>
/// UI事件监听器:管理所有UGUI事件,提供事件参数类。
///                       附加到需要交互的UI元素上,用于监听用户的操作。
///                       类似于 EventTrigger 
/// </summary>
public class UIEventListener : MonoBehaviour, IPointerDownHandler, IPointerClickHandler, IPointerUpHandler
{
    //3.声明事件
    public event PointerEventHandler PointerClick;
    public event PointerEventHandler PointerDown;
    public event PointerEventHandler PointerUp;

    /// <summary>
    /// 通过变换组件获取事件监听器
    /// </summary>
    /// <param name="tf"></param>
    /// <returns></returns>
    public static UIEventListener GetListener(Transform tf)
    {
        UIEventListener uiEvent =  tf.GetComponent<UIEventListener>();
        if (uiEvent == null) uiEvent = tf.gameObject.AddComponent<UIEventListener>();
        return uiEvent;
    }

    //1.继承接口
    public void OnPointerClick(PointerEventData eventData)
    {
        //抽象类   接口(多类抽象行为)    委托(一类抽象行为)
        //4. 引发事件
        if (PointerClick != null) PointerClick(eventData);
    }

    public void OnPointerDown(PointerEventData eventData)
    {
        if (PointerDown != null) PointerDown(eventData);
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        if (PointerUp != null) PointerUp(eventData);
    }
}

使用方法:

  1. 将代码保存在名为 UIEventListener.cs 的脚本文件中,并将其放置在 Unity 项目的合适位置。
  2. 在需要监听操作的 UI 元素上添加一个名为 UIEventListener 的组件。
  3. 在代码中,使用以下方式订阅 UI 事件的回调函数:
UIEventListener listener = UIEventListener.GetListener(transform);
listener.PointerClick += OnPointerClick;
listener.PointerDown += OnPointerDown;
listener.PointerUp += OnPointerUp;
  1. 实现相应的回调函数:
private void OnPointerClick(PointerEventData eventData)
{
    // 处理点击事件
}

private void OnPointerDown(PointerEventData eventData)
{
    // 处理按下事件
}

private void OnPointerUp(PointerEventData eventData)
{
    // 处理抬起事件
}
  1. 当用户在 UI 元素上进行相应操作时,回调函数将被触发,并在回调函数中处理相应的逻辑。

注意:

这段代码适用于 Unity 中的 UGUI 系统,因此需要在 Unity 项目中使用它。

Unity UGUI 事件监听器:UIEventListener

原文地址: http://www.cveoy.top/t/topic/Ws 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录