栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity实现鼠标连击事件,可自定义连双击、三击、无限击

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity实现鼠标连击事件,可自定义连双击、三击、无限击

using System;
using System.Net.NetworkInformation;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UIButton : Button
{
    [Serializable]
    public class DoubleClickedEvent : UnityEvent { }

    [SerializeField]
    private DoubleClickedEvent m_onDoubleClick = new DoubleClickedEvent();
    //这个是双击成功后激活的事件,脚本在这里挂
    public DoubleClickedEvent OnDoubleClick
    {
        get { return m_onDoubleClick; }
        set { m_onDoubleClick = value; }
    }

    private DateTime m_firstTime;
    private DateTime m_secondTime;
    int clickCount = 0;

    private void Press()
    {
        if (null != OnDoubleClick)
            OnDoubleClick.Invoke();
        resetTime();
    }

    public override void OnPointerDown(PointerEventData eventData)
    {
        base.OnPointerDown(eventData);
        // 按下按钮时对两次的时间进行记录
        if (m_firstTime.Equals(default(DateTime)))
        {
            m_firstTime = DateTime.Now;
        }
        else
            m_secondTime = DateTime.Now;
    }
    float jiange = 1600;
    public override void OnPointerUp(PointerEventData eventData)
    {
        base.OnPointerUp(eventData);
        // 在第二次鼠标抬起的时候进行时间的触发,时差小于1000ms触发
        if (!m_firstTime.Equals(default(DateTime)) && !m_secondTime.Equals(default(DateTime)))
        {
            Debug.Log("CLICK"+clickCount);
            var intervalTime = m_secondTime - m_firstTime;
            float milliSeconds = intervalTime.Seconds * 1000 + intervalTime.Milliseconds;
            if (milliSeconds < jiange)
            {
                clickCount++;
                if (clickCount > 5)
                {
                    clickCount = 0;
                    Press();
                }
            }
            else
            { 
                resetTime();
                clickCount = 0;
            }
        }
    }
    
    private void resetTime()
    {
        m_firstTime = default(DateTime);
        m_secondTime = default(DateTime);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901989.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号