当前位置:网站首页>学习(三):事件的订阅与发布
学习(三):事件的订阅与发布
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);
}
}
边栏推荐
猜你喜欢
GM7150,振芯科技,视频解码器,CVBS转BT656/601,QFN32,替换TVP5150/CJC5150
ICN6211:MIPI DSI转RGB视频转换芯片方案介绍 看完涨知识了呢
进程(中):进程状态、进程地址空间
实现动态库(DLL)之间内存统一管理
The use and simulation of vector implementation:
Altium Designer基础知识
剑指Offer 35.复杂链表的复制
Process (in): process state, process address space
【Connect the heart rate sensor to Arduino to read the heart rate data】
如何用 Lightly 进行 Debug 断点调试?
随机推荐
ICN6211:MIPI DSI转RGB视频转换芯片方案介绍 看完涨知识了呢
本地数据库 sqlite3 编译和使用
【网络基础】浏览器输入一个URL之后,都发生了什么(详细讲解)
Compatible with C51 and STM32 Keil5 installation method
Introduction and mock implementation of list:list
【LeetCode】合并
Comparative analysis of mobile cloud IoT pre-research and Alibaba Cloud development
AD8307对数检波器
判断子序列 —— LeetCode-392
Lightly:新一代的C语言IDE
Hash table problem solving method
Beckhoff ET2000 listener use
【TCS3200 color sensor and Arduino realize color recognition】
【plang 1.4.4】编写贪吃蛇脚本
WebApp 在线编程成趋势:如何在 iPad、Matepad 上编程?
MQ-5 combustible gas sensor interface with Arduino
“520” 如何正确地用代码向 ta 表白?
进程(番外):自定义shell命令行解释器
rosdep update失败解决办法(亲测有效)
unity 代码拆分图集