using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.EventSystems;
|
using System;
|
using UnityEngine.Events;
|
|
namespace vnxbqy.UI
|
{
|
[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; }
|
}
|
|
UIEvent m_ClickOtherEvent = new UIEvent();
|
|
public void AddListener(UnityAction _callBack)
|
{
|
m_ClickOtherEvent.AddListener(_callBack);
|
}
|
|
public void RemoveAllListeners()
|
{
|
m_ClickOtherEvent.RemoveAllListeners();
|
}
|
|
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,
|
}
|
}
|
}
|