Getted:
1.写代码要搞清层级,模块间层级清晰,哪些是下层,哪些是上层,哪些是管理者;代理方法,事件,向上层向下层发送,名称风格要统一。
一.系统架构重构
第一章小结:
1.动态库在vs&unity中的使用;一般放在动态库中的代码都是不怎么允许别人修改的。这种框架的模块,比较适合。缺点:无法使用断点
2.module框架模块,暂时还没看出来它实际的用途。(为了解耦,模块之间通过事件进行信息传递)
UI框架模块,实现了unity原生UGUI的功能集成;定义了几种基本窗口,以及方便的对UI控件的事件添加/移除接口。看了这个东西,会发现有好多接口,跟FairyGUI提供的接口很类似。我觉得还是FairyGUI更好用,那相当于也是一个UI框架,并且提取出去了。
老师首先进行了模块的设计,分层,归类...
image.png
image.png
2019.1.12 此时我已找不到原来的视频了,这个是重构之前的设计思路
设计思路:
1.单向依赖
不同层级之间的模块,单项依赖
仅允许上层模块依赖下层模块
image.png
2.模块解耦(静态解耦)
业务层模块通过【事件】和【消息】的方式通讯
image.png
3.模块独立
服务层模块之间完全独立
如果两个模块仍然必须有公共逻辑,将其再次抽象,放入基础类库
image.png
4.代码重用
业务层公共逻辑——>服务层
服务层公共逻辑——>基础类库
视图层公共逻辑——>UI控件
5.设计模式
image.png
启动模块
image.png
模块框架重构
image.png
UI框架重构
image.png
image.png
二.通用网络模块
第二章小结:
这一系列框架及代码,都可以分为两种观点来看:
第一种是上层观点,就是只管怎样使用;第二种是底层实现,就是下面是怎样实现。服务器
上层用法:
ServerDemo中
1.创建一个NetManager类,给定服务器所在端口号,添加要监听的“关键字”,并给这个监听一个回调。
2.回调函数,是来自Session的回调
3.接收和回复的格式(“关键字”):proto
image.png底层细节:
具体工作可以分为三部分,NetManager,Gateway,KCPSession
其中NetManager作为上层,下层工作还是要交给Gateway和KCPSession。
1.Gateway开启了一个线程,通过Socket不断的从远端尝试获得数据,数据的第一个字节存放了发送者的ID,即KCPSession ID。如果是第一次发消息的用户,那么给它新建一个KCPSession,一一对应。
然后把数据存到这个KCPSession中的待处理队列中。(这是个交换队列)
2.Gateway的主线程,一直会隔一段时间Tick一次所有的KCPSession,让它们处理上述交换队列里的数据。(大概是为了减少多线程同时操作同一队列的事情,所以用交换队列)。通过KCP协议解析数据,回调数据内容给NetManager处理。
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
1.Protobuf使用
https://www.jianshu.com/p/d9be1b3d2446
https://blog.csdn.net/qq_36458268/article/details/81067280
我直接把它之前工程动态库copy过来。protobuf-net.dll
底层结构弄好之后,老师写了一个服务器demo:
image.png
7 ILRuntime 热更新
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png





































