| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using UnityEngine.EventSystems; | 
| using System; | 
| using UnityEngine.Events; | 
|   | 
|     [RequireComponent(typeof(RectTransform))] | 
|     public class ClickScreenOtherSpace : MonoBehaviour | 
|     { | 
|         [SerializeField] | 
|         bool m_DeActiveSelf = true; | 
|         public bool deActiveSelf { | 
|             get { return m_DeActiveSelf; } | 
|             set { m_DeActiveSelf = value; } | 
|         } | 
|   | 
|         [SerializeField] | 
|         RespondType m_RespondType = RespondType.Out; | 
|         public RespondType respondType { | 
|             get { return m_RespondType; } | 
|             set { m_RespondType = value; } | 
|         } | 
|   | 
|         Action m_ClickOtherEvent; | 
|   | 
|         public void AddListener(Action _callBack) | 
|         { | 
|             m_ClickOtherEvent += _callBack; | 
|         } | 
|   | 
|         public void RemoveAllListeners() | 
|         { | 
|             m_ClickOtherEvent = null; | 
|         } | 
|   | 
|         private void LateUpdate() | 
|         { | 
|             if (Input.GetMouseButtonDown(0)) { | 
|                 var sp = Input.mousePosition; | 
|                 switch (m_RespondType) { | 
|                     case RespondType.In: | 
|                         if (RectTransformUtility.RectangleContainsScreenPoint(this.transform as RectTransform, sp, CameraManager.uiCamera)) { | 
|                             m_ClickOtherEvent.Invoke(); | 
|                             this.SetActive(!m_DeActiveSelf); | 
|                         } | 
|                         break; | 
|                     case RespondType.Out: | 
|                         if (!RectTransformUtility.RectangleContainsScreenPoint(this.transform as RectTransform, sp, CameraManager.uiCamera)) { | 
|                             m_ClickOtherEvent.Invoke(); | 
|                             this.SetActive(!m_DeActiveSelf); | 
|                         } | 
|                         break; | 
|                 } | 
|             } | 
|         } | 
|   | 
|         public enum RespondType | 
|         { | 
|             In, | 
|             Out, | 
|         } | 
|     } |