//-------------------------------------------------------- // [Author]: 玩个游戏 // [ Date ]: Saturday, November 25, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.Events; using System; [RequireComponent(typeof(RectTransform))] public class FakeButton2 : MonoBehaviour { RectTransform m_RectTransform; public RectTransform rectTransform { get { return m_RectTransform ?? (m_RectTransform = this.transform as RectTransform); } } float overTime = float.MaxValue; Action m_OnClick; public void AddListener(Action _callBack) { m_OnClick += _callBack; } public void RemoveAllListeners() { m_OnClick = null; } private void LateUpdate() { if (Input.GetMouseButtonDown(0)) { var sp = Input.mousePosition; if (RectTransformUtility.RectangleContainsScreenPoint(this.transform as RectTransform, sp, CameraManager.uiCamera)) { overTime = Time.realtimeSinceStartup + 0.03f; } } if (Input.GetMouseButtonUp(0)) { var sp = Input.mousePosition; if (RectTransformUtility.RectangleContainsScreenPoint(this.transform as RectTransform, sp, CameraManager.uiCamera)) { if (Time.realtimeSinceStartup > overTime) { m_OnClick?.Invoke(); overTime = float.MaxValue; } } } } }