【Framework系列之Client】Manager模块介绍

        今天来介绍一下Manager模块,Manager模块可以说是Framework框架中最重要的部分之一,话不多说直接开始。

概括

        Manager模块由多种功能Manager类共同组成,如LoadManager(加载管理类)、ResourceManager(资源管理类)、UIManager(UI管理类)、AudioManager(声音管理类)、DataManager(数据管理类)、EventManager(事件管理类)等等。

        这些Manager类分别负责相关模块的功能。有同学会问,什么情况下才会去封装一个Manager类呢?大致需要满足以下两个条件可以封装为Manager类:

        第一,该功能需要在工程的不同地方调用。例如EventManager,在工程中类与类之间需要相互传递数据时,EventManager则可以实现事件的注册,并且可以在不同的地方实现事件的发送。再例如UIManager,UIManager负责UI界面的打开、关闭,UI的打开、关闭则会在场景加载完、按钮点击、服务器事件等不同情况下调用。

        第二,该功能在工程运行时只需要一份实例。例如EventManager,在工程中事件需要统一的存储,在事件发送时,通过事件列表对事件进行统一的回调。再例如UIManager,UIManager负责所有UI的统一管理,包括UI的创建、打开、关闭、销毁等等,UI的操作都在一个UIManager内完成。

Manager类

        Manager类都是以单例方式实现,在Framework中Manager类统一继承自ManagerBase类,ManagerBase类继承自SingletonMonoBehaviour实现单例模式。

        下面是ManagerBase类的代码,SingletonPath定义的是Manager类绑定的对象路径。OnInit是一个虚函数接口,Manager类可以自行覆写初始化方法。

public class ManagerBase<T> : SingletonMonoBehaviour<T>where T : ManagerBase<T>
{/// <summary>单例路径</summary>public static string SingletonPath{get { return FrameworkDefine.ManagerRootPath; }}/// <summary>ManagerBase初始化</summary>public void Init(){OnInit();}protected virtual void OnInit(){}
}

        SingletonMonoBehaviour实现的继承自MonoBehaviour的单例类。有关单例小伙伴们可以看我之前写的文章《【Unity知识点详解】Unity中的单例使用》。

ManagerCollection

        由于Manager类都是单例,并且调用会分散在工程中的各个地方,对代码的维护会造成不少的麻烦,所以为了能够统一的管理,创建了一个ManagerCollection类用于存放所有的Manager类。所有的Manager类的调用都要通过ManagerCollection。

        ManagerCollection是一个静态类,ManagerCollection提供了Manager类同名的属性用于调用Manager类实例。并且在InitManager中初始化各个Manager类。示例代码如下:

public static class ManagerCollection
{/// <summary>初始化管理类</summary>public static void InitManager(){EventManager.Init();UIManager.Init();}/// <summary>事件管理类</summary>public static EventManager EventManager{get { return EventManager.Instance; }}/// <summary>UI管理类</summary>public static UIManager UIManager{get { return UIManager.Instance; }}
}

相关文章

        最后是关于不同Manager类的介绍,持续更新中。

LoadManager、ResourceManager介绍:https://blog.csdn.net/huoyixian/article/details/145621114

        下面是Unity中单例的实现。

【Unity知识点详解】Unity中的单例使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17072.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地Deepseek-r1:7b模型集成到Google网页中对话

本地Deepseek-r1:7b网页对话 基于上一篇本地部署的Deepseek-r1:7b&#xff0c;使用黑窗口对话不方便&#xff0c;现在将本地模型通过插件集成到Google浏览器中 安装Google插件 在Chrome应用商店中搜索page assis 直接添加至Chrome 修改一下语言 RAG设置本地运行的模型&#…

【设计模式】【行为型模式】观察者模式(Observer)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f44d; 欢迎点赞、收藏、关注&#xff0c;跟上我的更新节奏 &#x1f3b5; 当你的天空突…

gitlab Webhook 配置jenkins时“触发远程构建 (例如,使用脚本)”报错

报错信息&#xff1a; <html> <head> <meta http-equiv"Content-Type" content"text/html;charsetISO-8859-1"/> <title>Error 403 No valid crumb was included in the request</title> </head> <body><h2…

AI赋能前端开发:薪资潜力无限的未来

在当今竞争激烈的就业市场&#xff0c;掌握AI写代码工具等AI技能已经成为许多专业人士提升竞争力的关键。尤其在快速发展的前端开发领域&#xff0c;AI的应用更是日新月异&#xff0c;为开发者带来了前所未有的机遇。高薪职位对熟练掌握AI技术的前端开发者的需求与日俱增&#…

外包干了4年,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;20年通过校招进入武汉某软件公司&#xff0c;干了差不多4年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能…

平面与平面相交算法杂谈

1.前言 空间平面方程&#xff1a; 空间两平面如果不平行&#xff0c;那么一定相交于一条空间直线&#xff0c; 空间平面求交有多种方法&#xff0c;本文进行相关讨论。 2.讨论 可以联立方程组求解&#xff0c;共有3个变量&#xff0c;2个方程&#xff0c;而所求直线有1个变量…

【状态空间方程】对于状态空间方程矩阵D≠0时的状态反馈与滑模控制

又到新的一年啦&#xff0c;2025新年快乐~。前几个月都没更新&#xff0c;主要还是因为不能把项目上的私密工作写进去&#xff0c;所以暂时没啥可写的。最近在山里实习&#xff0c;突然想起年前遗留了个问题一直没解决&#xff0c;没想到这两天在deepseek的加持下很快解决了&am…

LearningFlow:大语言模型城市驾驶的自动化策略学习工作流程

25年1月来自香港科技大学广州分校的论文“LearningFlow: Automated Policy Learning Workflow for Urban Driving with Large Language Models”。 强化学习 (RL) 的最新进展表明其在自动驾驶领域具有巨大潜力。尽管前景光明&#xff0c;但诸如手动设计奖励函数和复杂环境中的…

大语言模型多代理协作(MACNET)

大语言模型多代理协作(MACNET) Scaling Large-Language-Model-based Multi-Agent Collaboration 提出多智能体协作网络(MACNET),以探究多智能体协作中增加智能体数量是否存在类似神经缩放定律的规律。研究发现了小世界协作现象和协作缩放定律,为LLM系统资源预测和优化…

【OpenCV】双目相机计算深度图和点云

双目相机计算深度图的基本原理是通过两台相机从不同角度拍摄同一场景&#xff0c;然后利用视差来计算物体的距离。本文的Python实现示例&#xff0c;使用OpenCV库来处理图像和计算深度图。 1、数据集介绍 Mobile stereo datasets由Pan Guanghan、Sun Tiansheng、Toby Weed和D…

PT8032 3 通道触摸 IC

1. 概述 PT8032 是一款电容式触摸控制 ASIC &#xff0c;支持 3 通道触摸输入 ,2 线 BCD 码输出。具有低功耗、 高抗干扰、宽工作电压范围、高穿透力的突出优势。 2. 主要特性 工作电压范围&#xff1a; 2.4~5.5V 待机电流约 9uAV DD5V&CMOD10nF 3 通道触…

像指针操作、像函数操作的类

像指针一样的类。把一个类设计成像一个指针。什么操作符运用到指针上&#xff1f; 使用标准库的时候&#xff0c;里面有个很重要的东西叫容器。容器本身一定带着迭代器。迭代器作为另外一种智能指针。迭代器指向容器里的一个元素。迭代器用来遍历容器。 _list_iterator是链表迭…

Pikachu–XXE漏洞

Pikachu–XXE漏洞 一、XML基础概念 XML文档结构由XML声明&#xff0c;DTD(文档类型定义)&#xff0c;文档元素三部分构成&#xff01; #XML是可扩展标记语言(Extensible Markup Language),是设计用来进行数据的传输与存储。 #eg: <!--XML声明--><!--指明XML文档的版…

matlab-simulink

1、信号到对象解析指示符 代表的意义是&#xff1a;信号名称必须解析为信号对象 2、input inport 双击空白区域输入模块名字&#xff0c;自动联想显示相关模块 没看出太大的差别 3、Stateflow 双击空白区域输入stateflow、或者chart或者常用库里面去查找 4、离散时间积分…

简单几个步骤完成 Oracle 到金仓数据库(KingbaseES)的迁移目标

作为国产数据库的领军选手&#xff0c;金仓数据库&#xff08;KingbaseES&#xff09;凭借其成熟的技术架构和广泛的市场覆盖&#xff0c;在国内众多领域中扮演着至关重要的角色。无论是国家电网、金融行业&#xff0c;还是铁路、医疗等关键领域&#xff0c;金仓数据库都以其卓…

网络安全概论——网络安全基础

一、网络安全引言 信息安全的四个属性&#xff08;信息安全的基本目标 &#xff09; 保密性:信息不会被泄露给非授权用户完整性&#xff1a;保证数据的一致性可用性&#xff1a;合法用户不会被拒绝服务合法使用&#xff1a;不会被非授权用户或以非授权的方式使用 二、网络安全…

数据结构-链式二叉树

文章目录 一、链式二叉树1.1 链式二叉树的创建1.2 根、左子树、右子树1.3 二叉树的前中后序遍历1.3.1前(先)序遍历1.3.2中序遍历1.3.3后序遍历 1.4 二叉树的节点个数1.5 二叉树的叶子结点个数1.6 第K层节点个数1.7 二叉树的高度1.8 查找指定的值(val)1.9 二叉树的销毁 二、层序…

SpringCloud系列教程:微服务的未来(二十三)SpringAMQP快速入门、Work Queues、Fanout交换机

前言 Spring AMQP是Spring框架中用于与消息中间件&#xff08;如RabbitMQ&#xff09;进行交互的一个项目&#xff0c;它简化了消息发送、接收以及消息处理的过程。通过Spring AMQP&#xff0c;开发者可以快速实现基于RabbitMQ的消息传递系统。本文将介绍Spring AMQP的快速入门…

单片机简介

一、单片机简介 电脑和单片机性能对比 二、单片机发展历程 三、CISC VS RISC

Java中面向对象的三大特性 -- 有关多态

学习目标 理解多态掌握instanceof了解抽象类&#xff0c;抽象方法 1.多态(向上转型) ● 现在我们已经学会了继承&#xff08;类与类之间的&#xff09;关系&#xff0c;并且能够在子类继承父类的基础上进一步对子类的数据及操作进行扩展&#xff0c;增加新的成员变量和方法或…