/// <summary>
/// 增加EventTrigger事件监听办法
/// </summary>
/// <param name="trans"></param>
/// <param name="type"></param>
/// <param name="action"></param>
public static void AddEventTriggerHandler(this Transform trans, EventTriggerType type,UnityAction<BaseEventData> action)
{
EventTrigger eventTrigger = null;
if (!trans.TryGetComponent<EventTrigger>(out eventTrigger))
{
eventTrigger = trans.gameObject.AddComponent<EventTrigger>();
}
if (eventTrigger.triggers == null)
{
eventTrigger.triggers = new List<EventTrigger.Entry>();
}
var entry = eventTrigger.triggers.FirstOrDefault(p => p.eventID == type);
if (entry == null)
{
entry = new EventTrigger.Entry
{
eventID = type,
};
entry.callback.AddListener(action);
eventTrigger.triggers.Add(entry);
}
else
{
entry.callback.RemoveAllListeners();
entry.callback.AddListener(action);
}
}
/// <summary>
/// 增加带自定义参数的EventTrigger事件监听办法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="trans"></param>
/// <param name="type"></param>
/// <param name="action"></param>
/// <param name="t"></param>
public static void AddEventTriggerHandler<T>(this Transform trans, EventTriggerType type, UnityAction<BaseEventData, T> action, T t)
{
trans.AddEventTriggerHandler(type,p =>
{
action(p,t);
});
}
发表回复