服务器架构(二)
昨天拿到数据 Controllerl里的数据
Server相当于GameMan一个中间的转折数 谁都可以调用它
今天任务
枚举类型里面的值(不修改的话从第一个开始排序 int类型的)
不应该这么拆
从第4位开始截取 就是requestCode
第三段数据从第八为开始截取
具体的数据,因为传来的是字符串,还得转换,第12位开始截取,截取到总的减去8 数据长度代表:,
通过message解析出来了,所以都爱Controllermessage里去获取,Messages是一个工具类,它最好不要去调用其他的方法,所以给它一个回调的方法
server 里面是所有的功能:
要把它传入到 :
添加一个回调的方法:
//传入 RequestCode ActionCode
需要Common的命名空间的引用
用委托 :
拿到三个数据后 去调用
参数是一个委托 把三参数传入 把这个方法
那个方法放入委托
委托里面存入的是方法的地址: 类似于指针
client 就是this
以上就是进入的顺序
以下是传出
发送给客户端 客服端 的发送方法:
要发送这两个消息 把他 打包成一个数组 发送
再添加一个打包方法
把他两转为数组 再把长度加一起 再转换为长度
第一个是 RequestConde的数组
第二个是 data的数组
定义个装 他两个数组长度之和
再把长度转换为数组
把三个数组 链接在一起 ,第一段是长度+RequestCode+dataByte,再
当我们发送消息的时候 把需要打包的内容传入打包方法:
得到最终发送的数据
给客户端发送消息
在服务段里 是Client 里的发送
现在解决了 这个
现在要用数据库
添加一个新的数据库
跟数据库链接 用这个去链接
添加一个新类:
链接数据库
因为在链接数据库的时候账户密码步改变 所以定义为常量
常量一般都是大写
这个是IP地址,用本机的地址127.0.0.1
端口号 数据库名字 用户名字 用户的密码
这个地方大小写 都没有问题
先去引用这个
数据库去链接了 是个工具类 静态 的方法
1.去链接
2.链接上去开启
链接上就打开
失败 返回null
关闭链接的方法:
告诉关闭哪一个链接
如果不等于 的时候关闭
等于到时候 没有这个链接 就提示
它什么时候去建立链接???
只要有客户端 就去链接
在Cllent里面添加 一个 数据库的实例化
直接去调用方法
打开链接的时候
客户端 关闭的时候 数据也关闭
跟数据的这一快的链接方式 基本上完成了,服务器这一块儿就先到这里
接下来写客户端信息
用到这两个东西来写UI框架:
**************************************************下午**********************************
客户端在Unity里面完成
ui框架的原理 把Pnael存入json里面 通过读的方式读取出来
在线画流程图网址:
1.需要一个脚本控制总流程的启动 所有功能的控制
UImanger :控制所有UI
CameraManger:控制所有相机
AudioMnanger:音乐
PlayerManger:控制人物的
RequestManger:控制发送消息
以上这些统一继承一个管理类(BaseMAnger)
GameFacade:项目的总负责人
因为是联网的游戏:进行链接的管理脚本(ClientManger)
客户端的流程:
先创建一个总的控制脚本
再创建一个BaseManger
因为 BamdeManger 被GamerFacde管 所以步用继承 Magerhavir
创建构造函数的时候 将总游戏传入
所有Manger添加两个方法 初始化 销毁的方法
该UIManger里的东西
不需要单列
继承父类的东西
再创建 PlayerManger
再创建一个处理请求的脚本:
再创建一个ClientManger:
运行的时候
把
运行的时候 得把所有脚本初始化:在GameFacde里面:
初始化所有manger方法:
开始把所有Manger实例化出来:
把自己传入到其他脚本的方法 里 参数就是this
还需要调用每一个 Manger的方法
再添加 一个被关掉 活着被删除 的 时候的方法:
系统自带 的方法里调用 自己创建的方法
通过CliectManger 来连接服务器
需要本地,
服务器ip,端口号
用socket 需要Socket
在服务器里创建 iP 端口号
服务器开始的时候与服务器建立连接
与服务器建立连接
建立的时候 把ip端口传入
没有连接就输出宏的
删除的时候,或者关闭的时候:
现在写客户端的发送 客户端往服务器发送
带有RequestCode与actioCode 的数据
所以直接复制 Message脚本
不需要继承:
这种需要修改
属性 改一下
类库的方式 是服务器与客服端通用:
生成-》
把这个 放UNIty
Unity的版本和vs不一样 改版本
Unity支持的最高。ne是3.0
先去从客户端发送消息给服务器
再给它来一个打包的方法进行重在
向服务器发送消息方法:需要requettCode actionCode 就需要应用Commn=on
往服务器发送消息:
从服务器接收消息:
需要拿到 masgManner
l连接成功的时候
去接收服务器的消息:
第一个存入data 里面 从哪里开始存 存多长 sicket 回调函数
需要这个引用那个是System
如果count为0;
BaseQuest 接收与发送
所有的request都需要继承它 所以添加虚函数
创建一个字典 存放所有值
根据RequestCode 来区分,所以建都是ResquestCode 值是
添加到字典里的方法:
谁去做添加Reuquest的事情呢 ??
创建一个 就加入字典里面 每个脚本都事实检测 在BaseRequest里添加
它要拿里面东西不可以拿到 就同各国
把GameFacade做成单列 ,因为它继承了
所以做成伪单利:
如果不等于null ,就删除
直接调用:
这个是添加
还需要移除 删除的时候就是要建就可以;
所有 被删除的时候 它继承了model 所以用系统方法
把得到的具体 服务器发送的消息是存放再这里的
客户端接收消息后 给REquetstManger
里面添加处理响应的方法:
通过字典找 返回具体的某一个requestCode
没有找到
如果找到的话 直接
因为这俩个同级 不能调用
所以要这个里面有同样方法
ClientManger去用GameFaser 里的东西
先改这个
拿到参数
)))))))))))))))
脚本之间的调用顺序: