当前位置:网站首页>学习(三):事件的订阅与发布
学习(三):事件的订阅与发布
2022-08-02 03:33:00 【落水无痕】
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);
}
}
边栏推荐
猜你喜欢
随机推荐
实现动态库(DLL)之间内存统一管理
使用buildroot制作根文件系统(龙芯1B使用)
引擎开发日志:重构骨骼动画系统
idea中创建jsp项目详细步骤
AD8307对数检波器
向龙芯2K1000板子上烧写中标麒麟系统
剑指Offer 36.二叉搜索树与双向链表 中序遍历
电子密码锁_毕设‘指导’
滑动窗口方法
使用pyqt弹出消息提示框
LT9211芯片资料分享
C语言教程 - 制作单位转换器
uniCloud use
云服务器web项目部署详解
模拟电子技术------半导体
改变文件的扩展名
UKlog.dat和QQ,微信文件的转移
如何搭建私有云盘?
【数据库】事务的四大特性<详解>
2020 - AAAI - 图像修复 Image Inpainting论文导读 -《Region Normalization for Image Inpainting》