先上一张图:
object 类是整个客户端的基类,所有的unit的基类;数据层XXData ,主要作用是缓存数据,当收到服务端数据更新 同步或异步更新客户端数据
EventDispatcher 事件消息类,主要作用是注册移除事件,事件广播
Singleton 单列类 没有什么特别的功能,主要是注册和移除事件的实现
TickMgr :tick 计时器,主要作用注册tick记时以及游戏中主update
RPCMgr 主要作用 是收发RPC数据消息,以及消息队列排序处理
xxRPC 具体到xx功能RPC 消息处理
===================================== UI框架方面===================================================================
1.层级问题:分层存储,分栈存储,每个层对应自己的层级数值,同属于一个层的ui 后打开的弹出 先打开先入栈的隐藏;后打开的关闭,先打开的再弹出
2.生命周期问题:1)常驻内存 ,2)关闭后固定时间销毁,3)直接销毁
3.断线重连:数据重建,ui重建
4.ui资源释放问题:比较好的设计是不需要每个人手写代码释放,比如加载出来挂载的一些节点,主界面关闭后,同时处理节点释放。
关于跨场景ui 显示问题,可以通过ui入栈隐藏,再弹出或者再显示
ui 方面暂时想到这么多,后续想到再补充。。写的比较简单,里面具体实现需要考虑的细节比较多。。。。
客户端MVC设计一般没有太难的逻辑,这样想设计其实还是挺清晰的。。
=========================================================ui模板方面========================================================================================
其实很多时候,组件化 模板化 的确可以节省其他人开发成本,不过很多时候 策划脑洞大开 会有自己的一些想法,不一定会再次用到模板(实际项目开发过程中经常会出现,这需要程序和ui 去和策划商量)
比较合适组件化 模板化的 地方,个人的想法 是功能单一,比如一个道具item,按钮,二次确认框,tab 组件,升级弹窗提示,技能和特效模板,目前能想到的这些
==================================================== 战斗方面==============================================================================================
基本上所有的游戏的外围模块 基本上都是通用的,不同的地方就是战斗表现上,比如2D卡牌游戏和3D 游戏,即时战斗游戏 和 回合制游戏,都是一堆设定规则的逻辑,需要重点关注的 是 同步和校验,以及同屏人数带来的性能问题。也不知道该如何讲,具体游戏具体方法,目前这是能理解到的层次,可能还有其他的方面。
===================================================热更和patch=============================================================================================
01:33 准备休息,下次继续写。。。