客户端框架模块概念定义
NetHandle(网络层):
接收、解析网络数据,并将解析后的数据发送到数据层,待数据层完成对数据转化后通知逻辑层。
Data(数据层):
接收网络层解析后的数据,并将网络数据转化为客户端基础数据并存储。
Logic(逻辑层):
监听网络层的网络事件通知页面数据层刷新页面数据后通知页面层刷新页面。页面层接受到玩家操作后通知逻辑层进行处理,刷新页面数据后刷新页面。
ViewData(页面数据层):
组装并存放页面上的对象要显示的数据及其状态数据,页面上每一个可变的对象数据及其状态在该层都需要有对应的定义。不得存放其他用途数据。
Layer、Dlg、Item、Node(页面层):
从页面数据层获取数据并调用引擎API显示数据、设置状态。
Layer(页面层):
主层。
Page(可打开关闭的页面):
全屏可打开关闭的页面。
Dlg(对话框):
弹出式对话框。
Item(列表项):
列表内最小列表项。
Node(功能模块):
具有特定功能的模块组件,例如头像模块、道具模块、广播模块、摇杆模块。
一.数据流程逻辑:
红色:网络响应数据流。
紫色:配置数据流。
蓝色:网络请求数据流。
绿色:通知事件流。
1. 收到网络数据后,数据通过NetHandleManager分发到各NetHandle。
2. NetHandle通过消息号将数据传至各Data进行处理。
3. NetHandle将会在数据处理完成后通过已注册的监听通知Logic。(注:此框架中逻辑层注册的网络监听不会返回数据层处理后的数据,逻辑层在接收到网络监听响应后需要什么数据自行去数据层获取)
4. Logic通知ViewData组装页面显示数据。
5. ViewData,负责从数据层、配置表获取数据组装并储存页面各对象要显示的数据及其状态。
6. View接受到玩家交互后通知Logic进行相关处理。(注:接受到玩家交互后的所有处理在逻辑层进行)
7. Logic通知NetHandle进行网络消息发送组装。(注:此框架中Logic将不负责网络发送数据的组装任务,网络消息发送的数据在NetHandle进行获取、组装、发送)
二.目录结构:
三.游戏系统层级:
四.管理器介绍:
-
AudioMgr:音频管理器,缩写_adm,负责音乐音效的管理。
-
BundleMgr:资源管理器,缩写_bdm,负责资源的加载、释放。
-
ConfigMgr:配置管理器,缩写_cfm,负责配置数据的处理、储存、获取。
-
DataMgr:数据管理器,缩写_dtm,负责接受到的服务端数据的储存、获取。
-
DialogMgr:对话框管理器,缩写_dlm,负责对话框的管理。
-
EventMgr:事件管理器,缩写_evtm,负责事件的注册、分发。
-
GameMgr:游戏管理器,缩写_gm,负责游戏系统流程。
-
LogicMgr:逻辑模块管理器,缩写_lm,负责逻辑模块管理。
-
NetHandleMgr:网络模块管理器,缩写_nhm,负责网络模块管理。
-
SceneMgr:场景管理器,缩写_sm,负责场景切换和流程控制。
-
SchedulerMgr:调度器管理,缩写_schm,负责管理调度器。
-
StorageMgr:本地存储数据管理,缩写_stm,本地存储数据管理器。
-
SystemMgr:游戏系统管理,缩写_sysm,负责管理场景,提供各种提示、屏蔽功能。
五.UI制作流程(以排行榜为例)
1.基础预制件:相当于代码中的基类,所有对话框需由基础预制件修改而得。基础预制件中包含对话框的基本背景、关闭按钮、开启关闭动画、遮罩等页面基本功能。
2.预制件嵌套:一些通用模块例如头像模块、道具模块将会做成基础预制件供其他页面进行嵌套使用,基础预制件发生修改所有变体预制件、嵌套预制件都会应用修改。
a.从基础预制件目录找到BaseListView和BaseListItem拖到对话框的viewNode对象中。建立父子关系并修改对象名称。拖动对象到对话框的LuaBehavior组件上建立对象引用,经过此操作后在代码中可以直接使用“self.对象名”来对对象进行操作。有绑定lua脚本的对象都可以通过这种方式在代码中绑定对象。Unpack Prefab可以解除对象与创建它的预制件之间的关联关系。
c.listItem也绑定对象并选择对应的组件。组件选项默认为GameObject,选择组件后在代码中可省去GetComponent操作。
d.参照已有模块创建模块对应的代码类。
NetHandle:负责网络请求数据组装、网络请求、网络请求过滤、网络数据转发、网络响应逻辑层通知。
Data:负责本模块的数据处理、管理、储存。
ItemData:负责单个Item项的数据的处理、储存。
Logic:负责注册网络事件监听、处理页面逻辑。
ViewData:负责组装、储存页面要显示的数据。
Dlg:显示、刷新页面内容。
Item:负责组装、显示列表项显示数据。
e.加入脚本包含列表。
f.加入管理类。
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
g.场景配置中加入此页面的配置。
h.使用对话框管理器打开对话框。
i.效果展示:
listView模块集成了列表插件,理论上支持无限多的Item,由于就那么几个Item在循环利用,所以内容再多也不会卡。
转载:https://blog.csdn.net/weixin_42422809/article/details/101454678