然后添加两个类详细步骤点击打开链接
下面给我们自己的服务器端添加输出日志功能
我们找到Photonserver 自己提供的源码在下面这个路径
用VS打开选择MasterServer主服务器下的MasterApplication脚本 并且找到里面的SetUp方法
我们将这4句代码放在我们继承自ApplicationBase的类中的SetUp方法中 幷引入相对应的命名空间
Properties["LogFileName"] = "TD" "TD"这里的名字可以自己命名
然后回到之前打开的源代码路径下 复制一个log4net.config文件 到自己的工程目录下
然后打开这个log4net的配置文件 删除原来的一些配置
在回到源代码 找一句代码
private static readonly ILogger log = LogManager.GetCurrentClassLogger();
将这个代码复制到自己工程下面
下面要部署Server
首先把log4net这个配置文件的复制到输出目录设置为 始终复制
创建一个输出目录 在deploy目录下创建 文件夹/bin
生成的输出路径选择这个文件夹
下面配置文件 到deploy下Bin_win64下面 找到PhotonServer.config 文件用VS打开它
创建一个自己的Instance 复制整个 修改开始标签和结束标签 修改一下这个文件 Defult 是默认启动哪一个Application 我们可以修改为自己想要的 把WebSocketListeners 删除掉 在回到我们log4net的配置文件里面找到 value改成DEBUG 在重新生成一下工程就OK 接着呢 我们右键解决方案 新建一个项 叫TaidouCommon 是为了放置一些共享的类的 比如说操作码类 OperationCode 然后把Common中的Class类修改一下 改为枚举类型 接下来我们TaidouServer中要用使用TaidouCommon 我们在TaidouServer中添加引用 然后我们创建一个Handlers 处理器文件夹 处理器是用来处理服务器 客户端之间请求的 在Handlers文件夹下我们用来创建所有Handler 比如登陆的Handler 比如我们右键新建一个项 首先创建一个public的 HandlerBase类 每一个HandlerBase是用来处理一个OperationCode请求的 那么我们在TaidouApplication中来管理HandlerBase 假设我们有了一个登陆的请求 我们在Handlers文件夹下新建一个项 public 叫LoginHandler 继承自HandlerBase 回到TaidouApplication这边 我们需要添加一个注册的方法用来把所有的Handler注册给我们的TaidouApplication 让我们的TaidouApplication知道当前有哪些Handler 然后根据请求的OperationCode来识别是使用什么样的Handler来进行处理 所以我们添加一个方法ResgisteHandlers() 接下来我们在ClientPeer类中有一个OnPerationRequest方法中是用来处理客户端发起的请求的 我们要拿到TaidouApplication中的Hnadlers字典 所以我们把TaidouApplication类做成单例类 然后回到ClientPeer类的OnPerationRequest方法 我们根据Operation,Code查找Handler 如果找到了 我们就调用Handler里面的方法 首先给HanderBase做成abstract抽象类 添加一个abstract抽象方法 OnHanderMessage 下面进行客户端的架构 回到Unity 我们首先需要导入两个Dll文件, 注意在导入TadidouCommon的时候需要 再VS中右键属性 有个目标框架改成.Net 2.0(现在最新Unity版本支持.net多少不知道) 在Unity Hierarchy视图里面新建个空物体 改名为PhotonEngine 添加个脚本叫PhotonEngine 利用这个脚本跟服务器进行连接 建立连接首先需要一个PhotonPeer 接下来我们再创建Crontroller 这个呢是用来处理具体每一个请求的 用来返回每一个请求的 在Unity Asset文件下的Photon文件下在创建一个Controller文件夹 建一个ControllerBase类 回到我们PhotonEngine 因为整个只存在一个PhotoEngine 所以做一个单例 我们把Controller 统一用PhotonEngine 进行管理 在PhotonEngine 创建一个字典管理ControllerBase 提供一个注册ControllerBase的方法 让Controller自己进行注册 ControllerBase类 接着呢 我们在PhotonEngine中 我们还需要再PhotonEngine定义一个委托delegate 当我们PhotonEngine连接到服务器上的时候就要调用 到此为止客户端的架构基本也这样了 下面进行举例 当我们登陆游戏时候要进行服务器选择 首先创建一Controller 这个Controller是用来加载服务器列表的Controller 叫做ServerController 这个需要继承ControllerBase 先给PhotonEngine添加一个发送请求的方法 然后回到ServerController 发起获取服务器的请求 然后回到服务器 服务器要到MySQL中查询服务器列表 然后返还给客户端 首先我们先创建服务器 用MySQL-Front打开数据库 我们要和数据库进行操作还是首先要导入引用 在TaidouServer工程里添加一个文件夹DB 创建新项NHibernateHelper 然后我们在TaidouCommon下创建一个文件下Model 因为我们服务器也用客户端也用 首先添加一个新建项叫做ServerProperty 接下来创建映射类 我们在TaidouServer的DB下创建一个Maping文件夹 再新建一个ServerPropertyMap 然后我们回到MySQL创建一个表 接着呢我们在DB下创建一个Manager文件夹 这里面用来操作这个表的 ↑ 使用Magager类来去管理数据库 这个Manager相当于对数据库进行增删改查 创建ServerPropertyManager 一张表对应一个Model类对应一个Mapping类然后对应一个Manager类 然后我们要添加一个ServerHandler 我们需要使用到Json 所以添加引用LitJson.dll 然后我们在ServerCommon里面需要新建一个枚举类型 传递参数的时候为了区分参数 就是地点的Key 我们使用枚举类型去区分到底是什么参数 我们还需要一个枚举用来表示服务器连接的状态