监听脚本
using System;
using System.Collections.Generic;
public class EventConfig : Singleton<EventConfig> {
public delegate void EventDeliver();
public delegate void EventDeliver<T1>(T1 args1);
public delegate void EventDeliver<T1, T2>(T1 args1, T2 args2);
public delegate void EventDeliver<T1, T2, T3>(T1 args1, T2 args2, T3 args3);
public delegate void EventDeliver<T1, T2, T3, T4>(T1 args1, T2 args2, T3 args3, T4 args4);
public delegate void EventDeliver<T1, T2, T3, T4, T5>(T1 args1, T2 args2, T3 args3, T4 args4, T5 args5);
/// <summary>
/// 所有事件集合
/// </summary>
private Dictionary<EventEnum, Delegate> EventsDic = new Dictionary<EventEnum, Delegate>(new EventComparer());
public static bool IsValid
{
get
{
return Instance != null;
}
}
/// <summary>
/// 广播事件(无参数)
/// </summary>
/// <param name="eventType">Event type.</param>
public void BroadCast(EventEnum eventType)
{
if (!IsValid)
return;
if (!Instance.EventsDic.TryGetValue(eventType, out Delegate del))
return;
EventDeliver local_del = del as EventDeliver;
if (local_del != null)
local_del();
}
/// <summary>
/// 广播事件(1个参数)
/// </summary>
/// <param name="eventType">Event type.</param>
public void BroadCast<T1>(EventEnum eventType, T1 args1)
{
if (!IsValid)
return;
if (!Instance.EventsDic.TryGetValue(eventType, out Delegate del))
return;
EventDeliver<T1> m_del = del as EventDeliver<T1>;
if (m_del != null)
m_del(args1);
}
/// <summary>
/// 广播事件(2个参数)
/// </summary>
/// <param name="eventType">Event type.</param>
public void BroadCast<T1, T2>(EventEnum eventType, T1 args1, T2 args2)
{
if (!IsValid)
return;
if (</