| | |
| | | using System; |
| | | using UnityEngine.Events; |
| | | |
| | | [RequireComponent(typeof(RectTransform))] |
| | | public class ClickScreenOtherSpace : MonoBehaviour |
| | | [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) |
| | | { |
| | | [SerializeField] |
| | | bool m_DeActiveSelf = true; |
| | | public bool deActiveSelf { |
| | | get { return m_DeActiveSelf; } |
| | | set { m_DeActiveSelf = value; } |
| | | } |
| | | m_ClickOtherEvent = null; |
| | | m_ClickOtherEvent += _callBack; |
| | | } |
| | | |
| | | [SerializeField] |
| | | RespondType m_RespondType = RespondType.Out; |
| | | public RespondType respondType { |
| | | get { return m_RespondType; } |
| | | set { m_RespondType = value; } |
| | | } |
| | | public void RemoveAllListeners() |
| | | { |
| | | m_ClickOtherEvent = null; |
| | | } |
| | | |
| | | Action m_ClickOtherEvent; |
| | | |
| | | public void AddListener(Action _callBack) |
| | | private void LateUpdate() |
| | | { |
| | | if (Input.GetMouseButtonDown(0)) |
| | | { |
| | | 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; |
| | | } |
| | | 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; |
| | | case RespondType.InOut: |
| | | m_ClickOtherEvent?.Invoke(); |
| | | this.SetActive(!m_DeActiveSelf); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public enum RespondType |
| | | { |
| | | In, |
| | | Out, |
| | | } |
| | | } |
| | | public enum RespondType |
| | | { |
| | | In, |
| | | Out, |
| | | InOut |
| | | |
| | | } |
| | | } |