之前发的博客在移动端都是有问题的 

无奈之下自己写了一套

#region 模块信息
// **********************************************************************
// Copyright (C) 2018 Blazors
// Please contact me if you have any questions
// File Name:             MButton.cs
// Author:                子龙
//QQ / Whacth         991959229 / taylorgege
// **********************************************************************
#endregion
using UnityEngine.UI;
using UnityEngine;
using UnityEngine.EventSystems;
public class MButton : Button
{
    private const float M_Time = 2;
    private float timmer = 0;
    private bool isDown = false;
    protected override void Awake()
    {
        onClick.AddListener(OnClick);
    }
    private void Update()
    {
        //if (isDown)
        //{
        //    timmer += Time.deltaTime;
        //    if (timmer >= M_Time)
        //    {
        //        timmer = 0;
        //        interactable = true;
        //        isDown = false;
        //    }
        //}// 如果按钮是被按下状态

    }
    public void OnClick()
    {
        //interactable = false;
        //isDown = true;
    }
    // 延迟时间
    private float delay = 0.2f;
    private bool IsUp = false;
    private float lastIsDownTime;
    protected MButton()
    {
        m_onDoubleClick = new ButtonClickedEvent();
    }
    private ButtonClickedEvent m_onDoubleClick;
    public ButtonClickedEvent OnDoubleClick
    {
        get { return m_onDoubleClick; }
        set { m_onDoubleClick = value; }
    }
    public override void OnPointerDown(PointerEventData eventData)
    {
        base.OnPointerDown(eventData);
        if (Time.time - lastIsDownTime <= delay)
        {
            m_onDoubleClick.Invoke();
        }
    }
    public override void OnPointerUp(PointerEventData eventData)
    {
        base.OnPointerUp(eventData);
        lastIsDownTime = Time.time;
    }
}