using Axibug; using Game; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public enum BtnInputNumChangeType { AddBtn, ReduceBtn, } public class UILongClickButton : Button { public BtnInputNumChangeType mBtnType = BtnInputNumChangeType.AddBtn; public bool IsLongClick = false;//是否长按 private bool IsDown = false; private float Delay = 1f;//延迟相当于按下持续时间 private float LastDownTime; //事件发送判断,如已发送增加或者减少事件,则停止发送下一次相同事件 private bool IsSendEvent = false; public System.Action NumberChange; public System.Action NumberChangeCancel; public System.Action ButtonDownAction; private void Update() { //判断是否属于长按 if (IsDown) { if (Time.time - LastDownTime >= Delay) { //AxibugLog.Debug("长按"); IsLongClick = true; LastDownTime = Time.time; } } else { IsLongClick = false; } if(!IsSendEvent && IsLongClick) { NumberChange?.Invoke(); /* switch (mBtnType) { case BtnInputNumChangeType.AddBtn: //AppEntry.Event.Fire(this, NumChangeAddEvent.Create()); break; case BtnInputNumChangeType.ReduceBtn: NumChangeReduceEvent?.Invoke(); //AppEntry.Event.Fire(this, NumChangeReduceEvent.Create()); break; default: break; } */ IsSendEvent = true; } } /// /// 单击按钮一次 /// /// public override void OnPointerDown(PointerEventData eventData) { //AxibugLog.Debug("按钮被按下"); base.OnPointerDown(eventData); IsDown = true; LastDownTime = Time.time; ButtonDownAction?.Invoke(); } /// /// 按钮抬起 /// /// public override void OnPointerUp(PointerEventData eventData) { //AxibugLog.Debug("按钮抬起"); base.OnPointerUp(eventData); IsDown = false; IsSendEvent = false; NumberChangeCancel?.Invoke(); /* switch (mBtnType) { case BtnInputNumChangeType.AddBtn: AppEntry.Event.Fire(this, NumChangeAddCancelEvent.Create()); break; case BtnInputNumChangeType.ReduceBtn: AppEntry.Event.Fire(this, NumChangeReduceCancelEvent.Create()); break; default: break; }*/ } /// /// 鼠标离开按钮区域 /// /// public override void OnPointerExit(PointerEventData eventData) { //AxibugLog.Debug("鼠标离开按钮"); base.OnPointerExit(eventData); IsDown = false; IsSendEvent = false; } }