| //-------------------------------------------------------- | 
| //    [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; | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|   | 
|     } |