当前位置: 首页 > 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://www.fuzeviewer.com/news/235/

相关文章:

  • BongoCat日志搜索程序:正则表达式与高级筛选
  • c# 使用 jwt
  • macro出pin
  • 读书笔记:告别数据冗余!Oracle引用分区让父子表管理如此简单
  • 2025 年 10 月绕包电缆头,熔接电缆头,预制电缆头,冷缩管电缆头厂家最新推荐,产能、专利、环保三维数据透视
  • 2025年浅拾兰花双萃致臻精华油:从成分与技术维度解析其护肤效能
  • 路沿石加工设备厂家有哪些?2025石材机械十大品牌
  • 2025年10月重庆装饰装修公司推荐排行榜:十家企业综合对比与实用指南
  • 工业水泵控制移动终端APP需求于开发
  • 《CSS盒子模型》笔记总结 - 教程
  • MCS-51中断系统
  • 触控感应芯片电容式触摸IC 4通道触控方案VK36N4D
  • 测试领域,苏州永创-STD2000X-半导体分立器件电参数测试仪系统能测试哪些元器件和参数 - FORCREAT
  • 2025年AI IDE的深入对比与推荐排行:从好用到生成效果的转变
  • 20232411 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2025 年 10 月进销存管理系统,进销存软件,进销存管理软件公司最新推荐,技术实力与市场口碑深度解析!
  • 常用数据管理工具与平台汇总
  • 2025年10月美国投资移民机构推荐榜:权威机构综合对比分析
  • 2025 年企业级 GPU 服务器,8 卡风扇 GPU 服务器,大模型训练 GPU 服务器厂家最新推荐,技术实力与市场口碑深度解析
  • 揭秘 MCP Streamable HTTP 协议亲和性的技术内幕
  • 2025年10月EB5投资移民中介评测榜:客观数据支撑的专业推荐
  • 2025年10月EB5投资移民中介评价报告:五强机构深度解析
  • 2025年氨水换热器源头厂家权威推荐榜单:板式换热器/缠绕管换热器/螺旋板换热器源头厂家精选
  • 权威媒体:得帆信息连续两年领跑iPaaS市占率