145 lines
3.5 KiB
C#
145 lines
3.5 KiB
C#
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.Events;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD> <20><>ʽ<EFBFBD>滻ԭ<E6BBBB><D4AD> װ<><D7B0> <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public abstract class EventInfoBase{ }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ӧ<EFBFBD>۲<EFBFBD><DBB2><EFBFBD> <20><><EFBFBD><EFBFBD>ί<EFBFBD>е<EFBFBD> <20><>
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T"></typeparam>
|
|||
|
public class EventInfo<T>:EventInfoBase
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD> <20><>Ӧ<EFBFBD><D3A6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
public UnityAction<T> actions;
|
|||
|
|
|||
|
public EventInfo(UnityAction<T> action)
|
|||
|
{
|
|||
|
actions += action;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><DEB2><EFBFBD><DEB7><EFBFBD>ֵί<D6B5><CEAF>
|
|||
|
/// </summary>
|
|||
|
public class EventInfo: EventInfoBase
|
|||
|
{
|
|||
|
public UnityAction actions;
|
|||
|
|
|||
|
public EventInfo(UnityAction action)
|
|||
|
{
|
|||
|
actions += action;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
/// </summary>
|
|||
|
public class EventCenter: BaseManager<EventCenter>
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ڼ<EFBFBD>¼<EFBFBD><C2BC>Ӧ<EFBFBD>¼<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|||
|
private Dictionary<E_EventType, EventInfoBase> eventDic = new Dictionary<E_EventType, EventInfoBase>();
|
|||
|
|
|||
|
private EventCenter() { }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="eventName"><3E>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD></param>
|
|||
|
public void EventTrigger<T>(E_EventType eventName, T info)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD> <20><>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(eventDic.ContainsKey(eventName))
|
|||
|
{
|
|||
|
//ȥִ<C8A5>ж<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|||
|
(eventDic[eventName] as EventInfo<T>).actions?.Invoke(info);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD> <20><EFBFBD><DEB2><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="eventName"></param>
|
|||
|
public void EventTrigger(E_EventType eventName)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD> <20><>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (eventDic.ContainsKey(eventName))
|
|||
|
{
|
|||
|
//ȥִ<C8A5>ж<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|||
|
(eventDic[eventName] as EventInfo).actions?.Invoke();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="eventName"></param>
|
|||
|
/// <param name="func"></param>
|
|||
|
public void AddEventListener<T>(E_EventType eventName, UnityAction<T> func)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ί<EFBFBD>м<EFBFBD>¼ ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>
|
|||
|
if (eventDic.ContainsKey(eventName))
|
|||
|
{
|
|||
|
(eventDic[eventName] as EventInfo<T>).actions += func;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
eventDic.Add(eventName, new EventInfo<T>(func));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void AddEventListener(E_EventType eventName, UnityAction func)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ί<EFBFBD>м<EFBFBD>¼ ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>
|
|||
|
if (eventDic.ContainsKey(eventName))
|
|||
|
{
|
|||
|
(eventDic[eventName] as EventInfo).actions += func;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
eventDic.Add(eventName, new EventInfo(func));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20>Ƴ<EFBFBD><C6B3>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="eventName"></param>
|
|||
|
/// <param name="func"></param>
|
|||
|
public void RemoveEventListener<T>(E_EventType eventName, UnityAction<T> func)
|
|||
|
{
|
|||
|
if (eventDic.ContainsKey(eventName))
|
|||
|
(eventDic[eventName] as EventInfo<T>).actions -= func;
|
|||
|
}
|
|||
|
|
|||
|
public void RemoveEventListener(E_EventType eventName, UnityAction func)
|
|||
|
{
|
|||
|
if (eventDic.ContainsKey(eventName))
|
|||
|
(eventDic[eventName] as EventInfo).actions -= func;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public void Clear()
|
|||
|
{
|
|||
|
eventDic.Clear();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ijһ<C4B3><D2BB><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="eventName"></param>
|
|||
|
public void Claer(E_EventType eventName)
|
|||
|
{
|
|||
|
if (eventDic.ContainsKey(eventName))
|
|||
|
eventDic.Remove(eventName);
|
|||
|
}
|
|||
|
}
|