Unity 游戏框架:UI 管理神器 UI Kit (9)

这里看下 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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsppfj.html