unity封装点击交互的事件和拖拽交互的事件

对Unity EventSystem提供的常用事件接口进行了封装:

JPointerContainer类处理点击的交互

using GameUI.Components;
using System;
using UnityEngine.EventSystems;

namespace GameUI.Components
{
    /// <summary>
    /// 点击交互功能容器
    /// </summary>
    public class JPointerContainer : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler, IPointerEnterHandler, IPointerExitHandler, ISelectHandler, IDeselectHandler
    {
        //把交互处理抛出
        public Action<PointerEventData> onPointerClick;
        public Action<PointerEventData> onPointerDown;
        public Action<PointerEventData> onPointerUp;
        public Action<PointerEventData> onPointerEnter;
        public Action<PointerEventData> onPointerExit;
        public Action<BaseEventData> onSelect;
        public Action<BaseEventData> onDeselect;


        public void OnPointerClick(PointerEventData eventData)
        {
            if (onPointerClick != null) onPointerClick(eventData);
        }

        public void OnPointerDown(PointerEventData eventData)
        {
            EventSystem.current.SetSelectedGameObject(gameObject, eventData);
            if (onPointerDown != null) onPointerDown(eventData);
        }

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

        public void OnPointerEnter(PointerEventData eventData)
        {
            if (onPointerEnter != null) onPointerEnter(eventData);
        }

        public void OnPointerExit(PointerEventData eventData)
        {
            if (onPointerExit != null) onPointerExit(eventData);
        }

        public void OnSelect(BaseEventData eventData)
        {
            if (onSelect != null) onSelect(eventData);
        }

        public void OnDeselect(BaseEventData eventData)
        {
            if (onDeselect != null) onDeselect(eventData);
        }

        void OnDestroy()
        {
            onPointerClick = null;
            onPointerDown = null;
            onPointerUp = null;
            onPointerEnter = null;
            onPointerExit = null;
            onSelect = null;
            onDeselect = null;
        }
    }
}

JDragContainer处理拖拽的交互

using GameUI.Components;
using System;
using UnityEngine.EventSystems;

namespace GameUI.Components
{
    /// <summary>
    /// 拖拽功能容器
    /// </summary>
    public class JDragContainer : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
    {
        public Action<PointerEventData> onBeginDrag;
        public Action<PointerEventData> onDrag;
        public Action<PointerEventData> onEndDrag;

        public void OnBeginDrag(PointerEventData eventData)
        {
            if (onBeginDrag != null) onBeginDrag(eventData);
        }

        public void OnDrag(PointerEventData eventData)
        {
            if (onDrag != null) onDrag(eventData);
        }

        public void OnEndDrag(PointerEventData eventData)
        {
            if (onEndDrag != null) onEndDrag(eventData);
        }

        void OnDestroy()
        {
            onBeginDrag = null;
            onDrag = null;
            onEndDrag = null;
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值