Skip to content

Instantly share code, notes, and snippets.

@STARasGAMES
Created March 1, 2021 19:55
Show Gist options
  • Save STARasGAMES/33263444406761f508e7651df1bd051c to your computer and use it in GitHub Desktop.
Save STARasGAMES/33263444406761f508e7651df1bd051c to your computer and use it in GitHub Desktop.
Handy EventTrigger extensions for adding and removing listeners(callbacks) from C# script.
using System;
using UnityEngine.Events;
using UnityEngine.EventSystems;
public static class EventTriggerExtensions
{
public static void AddListener(this EventTrigger eventTrigger, EventTriggerType triggerType,
UnityAction<BaseEventData> call)
{
if (eventTrigger == null)
throw new ArgumentNullException(nameof(eventTrigger));
if (call == null)
throw new ArgumentNullException(nameof(call));
EventTrigger.Entry entry = eventTrigger.triggers.Find(e => e.eventID == triggerType);
if (entry == null)
{
entry = new EventTrigger.Entry {eventID = EventTriggerType.PointerClick};
eventTrigger.triggers.Add(entry);
}
entry.callback.AddListener(call);
}
public static void RemoveListener(this EventTrigger eventTrigger, EventTriggerType triggerType,
UnityAction<BaseEventData> call)
{
if (eventTrigger == null)
throw new ArgumentNullException(nameof(eventTrigger));
if (call == null)
throw new ArgumentNullException(nameof(call));
EventTrigger.Entry entry = eventTrigger.triggers.Find(e => e.eventID == triggerType);
entry?.callback.RemoveListener(call);
}
public static void RemoveAllListeners(this EventTrigger eventTrigger, EventTriggerType triggerType)
{
if (eventTrigger == null)
throw new ArgumentNullException(nameof(eventTrigger));
EventTrigger.Entry entry = eventTrigger.triggers.Find(e => e.eventID == triggerType);
entry?.callback.RemoveAllListeners();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment