70 lines
2.1 KiB
C#
70 lines
2.1 KiB
C#
|
using Unity.VisualScripting;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.Events;
|
|||
|
using UnityEngine.EventSystems;
|
|||
|
|
|||
|
public static class EventTriggerExtend
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 添加事件
|
|||
|
/// </summary>
|
|||
|
/// <param name="self">组件</param>
|
|||
|
/// <param name="eventType">事件类型</param>
|
|||
|
/// <param name="callBack">回调</param>
|
|||
|
public static void AddEvent(this EventTrigger self, EventTriggerType eventType, UnityAction<BaseEventData> 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<BaseEventData> callBack)
|
|||
|
{
|
|||
|
EventTrigger trigger;
|
|||
|
if (!self.TryGetComponent(out trigger))
|
|||
|
trigger = self.AddComponent<EventTrigger>();
|
|||
|
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<EventTrigger>();
|
|||
|
Object.DestroyImmediate(trigger);
|
|||
|
// if (trigger.triggers.Count != 0)
|
|||
|
// {
|
|||
|
// for (int i = 0; i < trigger.triggers.Count; i++)
|
|||
|
// {
|
|||
|
// trigger.triggers.Clear();
|
|||
|
// }
|
|||
|
// }
|
|||
|
}
|
|||
|
}
|