【Unity】利用Socket/TCP/IP开发网络游戏框架

服务器端

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:登录:输入用户名和密码之后,要连接数据库进行检测

猜你喜欢

转载自blog.csdn.net/qq_36622009/article/details/80110285