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, 
 | 
        } 
 | 
    } 
 |