当前位置: 首页 > news >正文

04.事件中心模块

一、事件中心模块的作用:

降低程序耦合性,减小程序复杂度。

二、什么是观察者设计模式

观察者设计模式(Observer Design Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系:当一个对象(被观察者)的状态发生变化时,所有依赖它的对象(观察者)会自动收到通知并更新。

这种模式的核心思想是解耦被观察者和观察者,让它们可以独立变化,同时保持联动。

三、简单的事件中心模块代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
/// <summary>
/// 事件中心 单例模式对象
/// </summary>
public class EventCenter : BaseManager<EventCenter>
{private Dictionary<string, UnityAction<object>> eventDic = new Dictionary<string, UnityAction<object>>();//key :事件的名字//value: 监听这个事件的对应的委托函数们/// <summary>/// 添加事件监听/// </summary>/// <param name="name">事件的名字</param>/// <param name="action">准备用来处理事件的委托函数</param>public void AddEventLisner(string name,UnityAction<object> action){if(eventDic.ContainsKey (name)){eventDic[name] += action;//委托的基本用法}else{eventDic.Add(name, action);}}/// <summary>/// 移除对应的事件监听,若监听事件的对象被销毁而没有移除事件监听/// 会导致内存泄露(无法触发垃圾回收)/// </summary>/// <param name="name">事件的名字</param>/// <param name="action">对应之前添加的委托函数</param>public void RemovaEventLisner(string name,UnityAction<object> action)//在 OnDestroy()生命周期函数中调用{if(eventDic.ContainsKey (name)){eventDic[name] -= action;}}/// <summary>/// 事件触发/// </summary>/// <param name="name">哪个事件触发了(名字)</param>public void EventTrigger(string name,object info){if(eventDic.ContainsKey (name)){//eventDic[name]();//另一种写法eventDic[name].Invoke(info);//执行这个委托监听的所有委托函数}}/// <summary>/// 清空事件中心,主要用在场景切换时/// 防止有监听函数没有被移除/// </summary>public void Clear(){eventDic.Clear();}
}


文章转载自:

http://w9k6dbYy.dzwrt.cn
http://MtQw6LiC.dzwrt.cn
http://68z2OFP2.dzwrt.cn
http://kzDBSgfk.dzwrt.cn
http://Sw1Jy7gH.dzwrt.cn
http://OsIvcV1a.dzwrt.cn
http://voifNKzm.dzwrt.cn
http://xArVhbc7.dzwrt.cn
http://kqM8HOsD.dzwrt.cn
http://Qr3InbKU.dzwrt.cn
http://7YTcV9mj.dzwrt.cn
http://JvTy6zfJ.dzwrt.cn
http://YBjZnzjQ.dzwrt.cn
http://amms6SgH.dzwrt.cn
http://Dxn6WuTT.dzwrt.cn
http://fhGAT1sF.dzwrt.cn
http://Yd6Lea2q.dzwrt.cn
http://Ai8p85DM.dzwrt.cn
http://8uNgi73F.dzwrt.cn
http://VIcVGYAd.dzwrt.cn
http://3Y4xrkzC.dzwrt.cn
http://A0iEXEAk.dzwrt.cn
http://6PH74t3u.dzwrt.cn
http://306IaZEy.dzwrt.cn
http://xUm752VQ.dzwrt.cn
http://dt3BB7Ph.dzwrt.cn
http://O9ZD0SbB.dzwrt.cn
http://HvduIKqz.dzwrt.cn
http://gesYXIbK.dzwrt.cn
http://18c4cgIE.dzwrt.cn
http://www.dtcms.com/a/371811.html

相关文章:

  • 【直接套模板】如何用 Web of Science 精准检索文献?
  • MCP与A2A
  • 数据库索引设计:在 MongoDB 中创建高效索引的策略
  • Shell 秘典(卷十)—— 服务器资源自动化监控脚本的设计与实现
  • 能源电力方向 的创业idea1
  • tf_keras包
  • PyTorch Lightning(训练评估框架)
  • Python进程,线程
  • java设计模式二、工厂
  • Claude Code核心功能操作指南
  • Python Mysql
  • Ansible 角色使用指南
  • 【c++】从三个类的设计看软件架构的哲学思考
  • 695章:使用Scrapy框架构建分布式爬虫
  • X448 算法签名验签流程深度解析及代码示例
  • 基于Apache Flink Stateful Functions的事件驱动微服务架构设计与实践指南
  • 算法题(201):传球游戏
  • 【JavaEE】(23) 综合练习--博客系统
  • 第五十四天(SQL注入数据类型参数格式JSONXML编码加密符号闭合复盘报告)
  • Kotlin 协程之 突破 Flow 限制:Channel 与 Flow 的结合之道
  • RabbitMQ 确认机制
  • DrissionPage 优化天猫店铺商品爬虫:现代化网页抓取技术详解
  • 腾讯云服务器 监控系统 如何查看服务器的并发数量?
  • Qt---对话框QDialog
  • 5G NR-NTN协议学习系列:NR-NTN介绍(1)
  • 9.7需求
  • 43. 字符串相乘
  • 【论文阅读】解耦大脑与计算机视觉模型趋同的因素
  • 20250907 线性DP总结
  • 实战演练:通过API获取商品详情并展示