服务器端
1.首先在VS2017中创建一个.NET FrameWork的控制台应用,以这个为基础来做服务端。
2.配置一下解决方案,默认类名不要为中文
3.创建5个文件夹,分别是Server,Tool ,Model, DAO 和Controller。
Server处理连接、通信功能。
Model存储数据表。
DAO处理对数据库的操作。
Controller处理客户端不同请求的响应逻辑。
创建一个Program类,有Main方法。
4.在Server文件夹中创建如下几个类:
【发现】 命名空间默认:和项目名相同。 子命名空间默认:项目名.文件夹名。(不要和类名重复)
Server:处理服务器的监听,管理连接到的Client列表。接收来自客户端的消息,并向客户端发送消息。
(在Main方法中生成一个Server类的对象)
Client:处理客户端的监听,接收来自服务器的消息。
Message:负责服务端和客户端的消息传输,提供数据数组的接口。
5.在Controller文件夹:
(1)抽象类:BaseController
(2)ControllerManager(被Server持有,client通过Server来访问)
负责保存所有的Controller,根据ControllerCode和ActionCode来调用对应的处理方法。
(3)DefaultController、
6.创建公共项目Common,其他项目引用这个项目。
在其中创建RequestCode、ActionCode的枚举
7.在Tool文件夹:
(1)ConnectHelper类:负责连接数据库,在Client类中调用相关方法。
注意:要先引入dll:C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies\v4.5.2\MySql.Data.dll
8.在Model文件夹:
(1)在MySQL数据库中设计好游戏需要用到的User表,Result表。
(2)给每张表建立一个对应的类
客户端
1.通过GameFacade(单例模式)来管理所有的Manager(都继承自BaseManager),并负责它们的相互访问。
在Start方法中,生成各个对象,执行它们的初始化方法。
在OnDestroy方法中,执行各个对象的销毁方法。
2. Managers
(1)BaseManager:OnInit、OnDestroy方法,便于子类重写。
(2)UIManager:
(3) ClientManager:
A. 初始化:生成一个socket对象,和服务器端进行连接。接收来自服务端的消息。
B. 销毁:关闭连接
创建Message类:客户端向服务端发送、接收消息的格式是相反的。
引入Common的dll。在VS中生成,要注意.Net Framework target要在3.5及以下版本。生成后,在bin/Debug文件夹下找到dll,拖到Unity的Plugins文件夹中。
C. 发送请求:packData、SendMessage
D.接收响应:ReadMessage、HoldResponse(分发给不同的Request来进行)
3.Request:
(1)用RequestManager来管理(字典)所有的Request(都继承自BaseRequest)
HoldResponse方法:根据Client传过来的RequestCode,调用对应Request的OnResponse函数
(2)LogRequest:登录:输入用户名和密码之后,要连接数据库进行检测