using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; namespace Convention.WindowsUI { public interface IBehaviourOperator { } /// /// 禁止在Awake时刻使用BehaviourContext /// public class BehaviourContextManager : MonoBehaviour, ICanvasRaycastFilter { public static UnityEvent InitializeContextSingleEvent(UnityEvent Event, params UnityAction[] calls) { Event ??= new(); foreach (var call in calls) Event.RemoveListener(call); foreach (var call in calls) Event.AddListener(call); return Event; } public static UnityEvent InitializeContextSingleEvent(UnityEvent Event, params UnityAction[] calls) { Event ??= new(); foreach (var call in calls) Event.RemoveListener(call); foreach (var call in calls) Event.AddListener(call); return Event; } public static UnityEvent InitializeContextSingleEvent(UnityEvent Event, params UnityAction[] calls) { Event ??= new(); foreach (var call in calls) Event.RemoveListener(call); foreach (var call in calls) Event.AddListener(call); return Event; } public static void InitializeContextSingleEvent(ref UnityEvent Event, params UnityAction[] calls) { Event ??= new(); foreach (var call in calls) Event.RemoveListener(call); foreach (var call in calls) Event.AddListener(call); } public static void InitializeContextSingleEvent(ref UnityEvent Event, params UnityAction[] calls) { Event ??= new(); foreach (var call in calls) Event.RemoveListener(call); foreach (var call in calls) Event.AddListener(call); } public static void InitializeContextSingleEvent(ref UnityEvent Event, params UnityAction[] calls) { Event ??= new(); foreach (var call in calls) Event.RemoveListener(call); foreach (var call in calls) Event.AddListener(call); } [Setting] public UnityEvent OnBeginDragEvent { get { if (!TryGetComponent(out var cat)) return null; return cat.OnBeginDragEvent; } set { var cat = this.GetOrAddComponent(); cat.OnBeginDragEvent = value; } } [Setting] public UnityEvent OnDragEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnDragEvent; } set { var cat = this.GetOrAddComponent(); cat.OnDragEvent = value; } } [Setting] public UnityEvent OnDropEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnDropEvent; } set { var cat = this.GetOrAddComponent(); cat.OnDropEvent = value; } } [Setting] public UnityEvent OnEndDragEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnEndDragEvent; } set { var cat = this.GetOrAddComponent(); cat.OnEndDragEvent = value; } } [Setting] public UnityEvent OnInitializePotentialDragEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnInitializePotentialDragEvent; } set { var cat = this.GetOrAddComponent(); cat.OnInitializePotentialDragEvent = value; } } [Setting] public UnityEvent OnPointerClickEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnPointerClickEvent; } set { var cat = this.GetOrAddComponent(); cat.OnPointerClickEvent = value; } } [Setting] public UnityEvent OnPointerDownEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnPointerDownEvent; } set { var cat = this.GetOrAddComponent(); cat.OnPointerDownEvent = value; } } [Setting] public UnityEvent OnPointerEnterEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnPointerEnterEvent; } set { var cat = this.GetOrAddComponent(); cat.OnPointerEnterEvent = value; } } [Setting] public UnityEvent OnPointerExitEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnPointerExitEvent; } set { var cat = this.GetOrAddComponent(); cat.OnPointerExitEvent = value; } } [Setting] public UnityEvent OnPointerUpEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnPointerUpEvent; } set { var cat = this.GetOrAddComponent(); cat.OnPointerUpEvent = value; } } [Setting] public UnityEvent OnScrollEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnScrollEvent; } set { var cat = this.GetOrAddComponent(); cat.OnScrollEvent = value; } } [Setting] public UnityEvent OnCancelEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnCancelEvent; } set { var cat = this.GetOrAddComponent(); cat.OnCancelEvent = value; } } [Setting] public UnityEvent OnDeselectEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnDeselectEvent; } set { var cat = this.GetOrAddComponent(); cat.OnDeselectEvent = value; } } [Setting] public UnityEvent OnSelectEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnSelectEvent; } set { var cat = this.GetOrAddComponent(); cat.OnSelectEvent = value; } } [Setting] public UnityEvent OnSubmitEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnSubmitEvent; } set { var cat = this.GetOrAddComponent(); cat.OnSubmitEvent = value; } } [Setting] public UnityEvent OnUpdateSelectedEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnUpdateSelectedEvent; } set { var cat = this.GetOrAddComponent(); cat.OnUpdateSelectedEvent = value; } } [Setting] public UnityEvent OnMoveEvent { get { if (!this.TryGetComponent(out var cat)) return null; return cat.OnMoveEvent; } set { var cat = this.GetOrAddComponent(); cat.OnMoveEvent = value; } } public delegate bool HowSetupRaycastLocationValid(Vector2 sp, Camera eventCamera); [Ignore]public HowSetupRaycastLocationValid locationValid; public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera) { return locationValid?.Invoke(sp, eventCamera) ?? true; } private void Awake() { foreach (var item in GetComponents()) { Destroy(item as MonoBehaviour); } } private void OnDestroy() { foreach (var item in GetComponents()) { Destroy(item as MonoBehaviour); } } } }