Singleton:单例模板,在学习(二)中
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 事件的订阅与发布
/// </summary>
public class EventManager : Singleton<EventManager>
{
public delegate void event_handler(string event_name, object udata);
private Dictionary<string, event_handler> dic = new Dictionary<string, event_handler>();
/// <summary>
/// 注册/订阅
/// </summary>
/// <param name="event_name">事件名</param>
/// <param name="h">函数</param>
public void AddListener(string event_name, event_handler h) {
if (this.dic.ContainsKey(event_name)) {
this.dic[event_name] += h;
}
else {
this.dic.Add(event_name, h);
}
}
/// <summary>
/// 删除/取消
/// </summary>
/// <param name="event_name">事件名</param>
/// <param name="h">函数</param>
public void RemoveListener(string event_name, event_handler h) {
if (!this.dic.ContainsKey(event_name)) {
return;
}
this.dic[event_name] -= h;
if (this.dic[event_name] == null) {
this.dic.Remove(event_name);
}
}
/// <summary>
/// 发送事件
/// </summary>
/// <param name="event_name">事件名</param>
/// <param name="udata">参数</param>
public void DispatchEvent(string event_name, object udata) {
if (!this.dic.ContainsKey(event_name)) {
return;
}
this.dic[event_name](event_name, udata);
}
}