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();
// }
// }
}
}