Unity3D UGUI按钮长按事件

**

转载

**

原理:

处理 Unity 的点击事件

IPointerDownHandler
IPointerUpHandler
IPointerExitHandler

在鼠标 按下的状态、松开、以及鼠标离开的状态来进行状态控制。

代码:

using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using System.Collections;

public class RepeatPressEventTrigger :MonoBehaviour,IPointerDownHandler,IPointerUpHandler,IPointerExitHandler
{
    public float interval=0.1f;

    [SerializeField]
    UnityEvent m_OnLongpress=new UnityEvent();


    private bool isPointDown=false;
    private float lastInvokeTime;

    // Use this for initialization
    void Start ()
    {
    }

    // Update is called once per frame
    void Update ()
    {
        if(isPointDown)
        {
            if(Time.time-lastInvokeTime>interval)
            {
                //触发点击;
                m_OnLongpress.Invoke();
                lastInvokeTime=Time.time;
            }
        }

    }

    public void OnPointerDown (PointerEventData eventData)
    {
        m_OnLongpress.Invoke();

        isPointDown = true;

        lastInvokeTime = Time.time;
    }

    public void OnPointerUp (PointerEventData eventData)
    {
        isPointDown = false;
    }

    public void OnPointerExit (PointerEventData eventData)
    {
        isPointDown = false;
    }
}

使用方法:

把脚本挂在 Button 上面 (当然其它控件也可以) ,然后设置 长按的回调函数 以及 调用间隔。

这里写图片描述

长按按钮,就会按照设定的间隔事件 ,不停得调用 指定的 OnLongPress 函数。

例子下载:

http://download.csdn.net/detail/cp790621656/8794181

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值