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

unity管理器设计:Manager of Managers

一、管理器Manager

Manager管理器是对一类对象进行统一管理,像是UIManager,AudioManager,InputManager等。

UIManager对UI的生命周期进行统一管理,AudioManager对音频的播放进行统一管理,InputManager对玩家的输入进行统一管理。

一个Manage对应管理一类对象,Manager是全局唯一的,所以通常以单例实现Manager。

二、Manager of Managers

随着功能的开发,Manager的数量不断增加,单例会逐渐变得难以管理。

为了解决单例数量太多难以管理的问题,引入一个大的单例Manger做为入口,通过这个Manager去访问其他子Manager。

全局只存在一个大的单例Manger。

三、代码实现

单例:

public abstract class Singleton<T> where T : class, new()
{private static T _instance;public abstract void Init();public static T Instance{get{if(_instance == null)_instance = new T();return _instance;}}
}

管理器入口GameManager:

using System;
using System.Collections.Generic;
namespace Manager
{/// <summary>/// Manager入口/// </summary>public partial class GameManager : Singleton<GameManager>{private Dictionary<Type,BaseManager> managerDic = new Dictionary<Type, BaseManager>();public override void Init(){OnInit();}public T Get<T>() where T : BaseManager, new(){Type type = typeof(T);if (!managerDic.ContainsKey(type)){T manager = new T();manager.OnInit();managerDic[type] = manager;}return (T)managerDic[type];}public void ClearManager<T>(T type) where T : BaseManager, new(){if(managerDic.ContainsKey(type as Type)){type.OnClear();managerDic[type as Type] = null;type = null;}}public void CleaerAllManagers(){foreach (var keyValuePair in managerDic){keyValuePair.Value.OnClear();BaseManager manager = keyValuePair.Value;manager = null;}managerDic.Clear();}}
}
namespace Manager
{public partial class GameManager : Singleton<GameManager>{// manager初始化private void OnInit(){Instance.Get<InoutManager>().OnInit();}}
}

BaseManager

public abstract class BaseManager
{public abstract void OnInit();public abstract void OnClear();
}

 

http://icebutterfly214.com/news/235/

相关文章:

  • 浅谈 Agent 开发工具链演进历程
  • 电梯调度算法结对编程作业
  • 2025质量可靠的义乌刺绣工厂推荐榜
  • DP1312多协议高性能读卡芯片支持A/B/Felaca/18092智能门锁读卡器模拟卡兼容PN512 - 动能世纪
  • 2025年10月兰花油品牌推荐榜单:多维度深度对比与选择指南
  • 2025 年1KV 冷缩硅橡胶电缆附件,冷热缩电缆附件,绕包电缆附件,熔接电缆附件厂家最新推荐,产能、专利、环保三维数据透视
  • 低代码开发便捷的技术深度解析
  • 2025年浅拾兰花双萃致臻精华油:从成分与科技维度解析其护肤功效
  • 销售公司绩效考核全攻略:维度、原则与数字化赋能方案
  • 题解:P4434 [COCI 2017/2018 #2] ​​Usmjeri
  • 小程序-跳转到公众号
  • 如何解决一堆向量的问题?10、Self-attention - -一叶知秋
  • 洞悉过往,一目了然:浅述视频融合平台EasyCVR如何实现海量视频录像的智能检索与高效回看
  • 2025年国内外五款AI编程工具深入对比与推荐排行
  • CSPS 前后的话
  • 2025 年 10 月云仓 ERP,云仓 saas 系统,云仓代发系统公司最新推荐,技术实力与市场口碑深度解析
  • iOS混淆实战用多工具组合把IPA加固做成可复用的工程能力(iOS混淆 IPA加固 无源码混淆
  • cyclonessd ROS2 lidar topic 数据丢帧 系统配置
  • 2025 年 10 月 WMS 系统,WMS 软件,wms 仓储管理系统公司最新推荐,聚焦资质、案例、售后的优质机构深度解读
  • Go语言测试全攻略:从单元测试到模糊测试
  • 2025 年 10 月进销存 erp,供应链 erp,零售 ERP 公司最新推荐,聚焦资质、案例、售后的五家机构深度解读!