这里看下 QMsgCenter.cs 就理解了
/* Copyright (c) 2017 xiaojun@putao.com * Copyright (c) 2017 liangxie */ namespace QFramework { using UnityEngine; [QMonoSingletonPath("[Event]/QMsgCenter")] public partial class QMsgCenter : MonoBehaviour, ISingleton { public static QMsgCenter Instance { get { return MonoSingletonProperty<QMsgCenter>.Instance; } } public void OnSingletonInit() { } public void Dispose() { MonoSingletonProperty<QMsgCenter>.Dispose(); } void Awake() { DontDestroyOnLoad(this); } public void SendMsg(QMsg tmpMsg) { // Framework Msg switch (tmpMsg.ManagerID) { case QMgrID.UI: QUIManager.Instance.SendMsg(tmpMsg); return; case QMgrID.Audio: AudioManager.Instance.SendMsg(tmpMsg); return; } // ForwardMsg(tmpMsg); } } }主要是 SendMsg 这个方法。
每个消息都提供了一个 ManagerID。
什么时候消息会传递到 SendMsg 呢?
就是当消息的 Id 不在自己模块的频段时候,核心代码如下:
QMgrBehaivour.cs
public override void SendMsg(QMsg msg) { if (msg.ManagerID == mMgrId) { Process(msg.EventID, msg); } else { QMsgCenter.Instance.SendMsg (msg); } }不难理解。
跨模块之间的消息发送顺序为:
UIPanel -> UIMgr -> MsgCenter -> CharacterManager -> Character。
关于模块化消息的介绍就到这里。
小结 (三)UI Kit 有 Manager Of Managers 框架强力支持。
而 Manager Of Managers 不仅提供了模块实现的工具 QMgrBehaivour 和 QMonoBehaviour,
还提供了紧实的模块化消息支持。
而 Manager Of Manager 贯穿整个 QFramework。
从 框架层的 UIMgr、AudioManager、NetworkManager 到 GamePlay 层的 CharacterManager/GameManager (需自己实现) 等,都可以使用。
本 Chat 的两个重点,一个是 UI 的管理,和一个是事件系统。
UI 管理
层级管理
界面生命周期管理
事件系统
全局消息机制
基于模块的消息机制
除了以上,其实还有一个系统,就是组件系统,整个组件系统的前提是强大的代码生成支持。
UI 组件系统
UIMark 标记
UIDefaultComponent: 默认的 Button、Image 等 Unity UGUI 提供的空间,自动识别。
UIElement: 不可复用的自定义控件。
UIComponent: 可复用的自定义控件。
以上整个系统呢在后续的 GitChat 里介绍。
搭建自己的 UI 框架之前都是手把手的教大家如何去搭建,不如给大家一个执行清单,大家跟着一下的步骤试着自己实现一下。实现完了之后欢迎跟笔者进行更多的探讨。
MyUIKit v0.0.1 开始
UIRoot Prefab 结构
UIRoot(Canvas)
EventSystem
UICamera
UIManager
实现容器
提供动态加载方式
Resources
提供 API
加载 UIRoot
Open
Close
Show
Hide
UIPanel
提供生命周期支持
OnOpen
OnEnter
OnExit
OnShow
OnHide
MyUIKit v0.0.2 层级管理
UIRoot
添加常用层级
UIManager
增加层级管理
提供 Open API 关于层级管理的重载支持
MyUIKit v0.0.3 UIData
UIData 基类定义
UIPanel
提供 UIData 接收参数
UIManager
Open API 提供 UIData 传入参数
MyUIKit v0.0.4 堆栈支持
UIPanelInfo 支持
记录层级信息
记录PanelName
记录 UIData
UIManager
提供 Stack 容器
提供 Push/Back API
MyUIKit v0.0.5 事件机制实现 MyUIKit v0.0.6 事件机制集成到基类UIPanel 集成消息注册列表,在 OnDestory 或者关闭时自动进行卸载操作。
MyUIKit v0.1.1 简易 UI Kit到这里已经实现了简易的 UI Kit,包含了 UI 层级管理、堆栈、界面管理、事件系统等核心功能。
在执行以上清单的过程中遇到问题欢迎随时与我交流。
如果完成,想知道接下来的开发方向,也请与我交流。
转载请注明地址:凉鞋的笔记:liangxiegame.com
更多内容
QFramework 地址:https://github.com/liangxiegame/QFramework
QQ 交流群:623597263
Unity 进阶小班:
主要训练内容:
框架搭建训练(第一年)
跟着案例学 Shader(第一年)
副业的孵化(第二年、第三年)
权益、授课形式等具体详情请查看《小班产品手册》:https://liangxiegame.com/master/intro