using System; using UnityEngine; using UnityEngine.EventSystems; public class ButtonExtend : ButtonEx { public int intInfo = 0; public Action onceClick; public override void OnPointerClick(PointerEventData eventData) { base.OnPointerClick(eventData); if (IsDoubleClick()) { return; } if (onceClick != null) onceClick(intInfo); } #region 双击 private float doubleClickInterval = 0.3f; private bool m_IsOnDoubleClick = false; private bool m_FreezeDbClick = false; public Action doubleClick; private bool IsDoubleClick() { if (doubleClick == null) { return false; } if (m_IsOnDoubleClick) { if (!m_FreezeDbClick) { doubleClick(); m_IsOnDoubleClick = false; m_FreezeDbClick = true; } } else { m_FreezeDbClick = false; m_IsOnDoubleClick = true; } TimeMgr.Instance.Register(this, OnDoubleClickCallback, doubleClickInterval); return true; } private void OnDoubleClickCallback(Component comp) { if (!m_FreezeDbClick) { if (onceClick != null) onceClick(intInfo); } m_FreezeDbClick = false; m_IsOnDoubleClick = false; } #endregion protected override void OnDisable() { if (Application.isPlaying) { TimeMgr.Instance.UnRegister(this); } } }