using Unity.VisualScripting; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; public static class EventTriggerExtend { /// /// 添加事件 /// /// 组件 /// 事件类型 /// 回调 public static void AddEvent(this EventTrigger self, EventTriggerType eventType, UnityAction callBack) { if (self.triggers.Count != 0) { for (int i = 0; i < self.triggers.Count; i++) { if (self.triggers[i].eventID == eventType) { self.triggers[i].callback.AddListener(callBack); return; } } } EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = eventType; entry.callback.AddListener(callBack); self.triggers.Add(entry); } public static void AddEventTrigger(this GameObject self, EventTriggerType eventType, UnityAction callBack) { var trigger = self.GetOrAddComponent(); if (trigger.triggers.Count != 0) { for (int i = 0; i < trigger.triggers.Count; i++) { if (trigger.triggers[i].eventID == eventType) { trigger.triggers[i].callback.AddListener(callBack); return; } } } EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = eventType; entry.callback.AddListener(callBack); trigger.triggers.Add(entry); } public static void RemoveEventTrigger(this GameObject self) { var trigger = self.GetComponent(); Object.DestroyImmediate(trigger); // if (trigger.triggers.Count != 0) // { // for (int i = 0; i < trigger.triggers.Count; i++) // { // trigger.triggers.Clear(); // } // } } }