153 lines
3.7 KiB
C#
Raw Normal View History

2025-04-18 22:01:12 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Windows;
public interface IEventInfo//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>յĽӿ<C4BD><D3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ԭ<EFBFBD><D4AD>
{
}
public class EventInfo<T> : IEventInfo
{
public UnityAction<T> action;
public EventInfo(UnityAction<T> action)
{
action += action;
}
}
public class EventInfo : IEventInfo
{
public UnityAction action;
public EventInfo(UnityAction action)
{
this.action += action;
}
}
2025-04-18 22:01:12 +08:00
/// <summary>
/// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
/// 1.<2E>ֵ<EFBFBD> 2.ί<><CEAF> 3.<2E>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
/// 4.<2E><><EFBFBD><EFBFBD>
2025-04-18 22:01:12 +08:00
/// </summary>
public class EventCenter : BaseManager<EventCenter>
{
//key ---<2D>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><E7A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8> <20>ȵȣ<C8B5>
//value --- <20><>Ӧ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD> <20><>Ӧ<EFBFBD><D3A6>ί<EFBFBD>к<EFBFBD><D0BA><EFBFBD>
private Dictionary<string , IEventInfo> eventDic = new Dictionary<string , IEventInfo>();
2025-04-18 22:01:12 +08:00
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="name"><3E>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="action">׼<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ί<EFBFBD>к<EFBFBD><D0BA><EFBFBD></param>
public void AddEventListener<T>(string name,UnityAction<T> action)
2025-04-18 22:01:12 +08:00
{
//<2F><>û<EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
//<2F>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
if(eventDic.ContainsKey(name))
{
(eventDic[name] as EventInfo<T>).action += action;//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-04-18 22:01:12 +08:00
}
//û<>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
else
{
eventDic.Add(name, new EventInfo<T>(action));//û<>оͼ<D0BE>һ<EFBFBD><D2BB>
}
}
/// <summary>
/// <20><><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD>¼<EFBFBD>,<2C><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><>з<EFBFBD><D0B7><EFBFBD>
/// </summary>
/// <param name="name"></param>
/// <param name="action"></param>
public void AddEventListener(string name, UnityAction action)
{
//<2F><>û<EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
//<2F>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
if (eventDic.ContainsKey(name))
{
(eventDic[name] as EventInfo).action += action;//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//û<>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
else
{
eventDic.Add(name, new EventInfo(action));//û<>оͼ<D0BE>һ<EFBFBD><D2BB>
2025-04-18 22:01:12 +08:00
}
}
/// <summary>
/// <20><>ȥ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
/// <20>¼<EFBFBD><C2BC>мӾ<D0BC><D3BE>м<EFBFBD>
/// </summary>
/// <param name="name"></param>
/// <param name="action"></param>
public void RemoveEventListener<T>(string name, UnityAction<T> action)
2025-04-18 22:01:12 +08:00
{
if(eventDic.ContainsKey(name))
{
(eventDic[name] as EventInfo<T>).action -= action;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ƴ<EFBFBD><>з<EFBFBD><D0B7><EFBFBD>
/// </summary>
/// <param name="name"></param>
/// <param name="action"></param>
public void RemoveEventListener(string name, UnityAction action)
{
if (eventDic.ContainsKey(name))
{
(eventDic[name] as EventInfo).action -= action;
2025-04-18 22:01:12 +08:00
}
}
/// <summary>
/// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="name"><3E><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
public void EventTrigger<T>(string name,T info)
2025-04-18 22:01:12 +08:00
{
if(eventDic.ContainsKey(name))
{
if((eventDic[name] as EventInfo<T>).action != null)
{
(eventDic[name] as EventInfo<T>).action.Invoke(info);
}
// eventDic[name].Invoke(info);//<2F>оʹ<D0BE><CDB4><EFBFBD><EFBFBD>¼<EFBFBD>
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><D0B7><EFBFBD>
/// </summary>
/// <param name="name"></param>
/// <param name="info"></param>
public void EventTrigger(string name)
{
if (eventDic.ContainsKey(name))
{
if ((eventDic[name] as EventInfo).action != null)
{
(eventDic[name] as EventInfo).action.Invoke();
}
// eventDic[name].Invoke(info);//<2F>оʹ<D0BE><CDB4><EFBFBD><EFBFBD>¼<EFBFBD>
2025-04-18 22:01:12 +08:00
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>л<EFBFBD>ʱ
/// </summary>
public void Clear()
{
eventDic.Clear();
}
}