栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

ET框架-22 创建ServerInfo实体及事件

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ET框架-22 创建ServerInfo实体及事件

这一节要实现的目标是 客户端获取服务器房间数量

在多人在线游戏里面,我们经常有很多房间的概念,或者区服的概念,这就是我们这一节的任务

客户端发送请求,拿到一个ServerInfo的集合

文章目录
    • 1.客户端部分
      • 1.1 创建ServerInfo实体
      • 1.2 创建获取服务器列表的消息
      • 1.3 编写ServerInfo的System
      • 1.4 进入LoginHelper中编写获取服务器列表的方法
      • 1.5 创建一个新的组件 ServerInfosComponent
      • 1.6 编写 ServerInfosComponent System
      • 1.7 进入SceneFactory中在创建ZoneScene的时候添加我们的组件
      • 1.8 进入LoginHelper中GetServerInfos方法遍历我们的服务器列表
    • 2. 服务器部分
      • 2.1 服务器添加ServerInfo和ServerInfoSystem
      • 2.2 服务器添加ServerInfoManagerComponent组件
      • 2.3 编写ServerInfoManagerComponent System
      • 2.4 ServerInfo目录下面添加一个Handler处理客户端发来的消息
      • 2.5 在SceneFacotry中创建Account服务器的时候添加这个组件
    • 总结

1.客户端部分 1.1 创建ServerInfo实体

这里的ServerInfo实体,就是一个房间区服实体

对应着有状态,和名称两个属性

1.2 创建获取服务器列表的消息

定义结构体,作为消息体

返回消息里面得包含这个结构体,并且设置为repeated代表可以重复,也就是一个list

这个list就可以存放我们房间区服集合


1.3 编写ServerInfo的System

这里是客户端的ServerInfo System
所以需要处理的
1.将服务器端发来的消息中的结构体ServerInfoProto进行解析和保存
2.将客户端本地的ServerInfo转换为ServerInfoProto

1.4 进入LoginHelper中编写获取服务器列表的方法

LoginHelper是我们写登录方法的地方

在这里我们定义一个新的异步函数,返回值为Int,代表函数结果

1.5 创建一个新的组件 ServerInfosComponent

在客户端我们需要ServerInfosComponent组件来保存我们服务器发来的n个S erverInfo房间

所以我们这个组件内部就是一个List来存放ServerInfo房间列表

1.6 编写 ServerInfosComponent System

ServerInfosComponent System是ServerInfosComponent的处理函数

在Hotfix层

我们实现了ServerInfosComponent System实体的Destory抽象方法,其实就是释放List里面全部的Entity

然后我们拓展了,添加ServerInfo实体的方法,将其添加到List里面

1.7 进入SceneFactory中在创建ZoneScene的时候添加我们的组件 1.8 进入LoginHelper中GetServerInfos方法遍历我们的服务器列表

我们在LoginHelper里面向服务器发送请求房间列表的时候,得到一个List,那么我们就可以去遍历List,然后将他们存到我们的客户端挂载的ServerInfosComponent组件上面

2. 服务器部分 2.1 服务器添加ServerInfo和ServerInfoSystem

直接Add我们客户端那里的代码过来就可以了,不需要重新写

2.2 服务器添加ServerInfoManagerComponent组件

这里的ServerInfoManagerComponent组件就是用来存储服务器上面的房间信息集合

2.3 编写ServerInfoManagerComponent System

具体逻辑
有和数据库进行联系,所以这里要使用异步的Awake

Load是热重载的生命周期函数

我们在Awake和Load的时候,都需要重新从数据库获取我们的房间信息

2.4 ServerInfo目录下面添加一个Handler处理客户端发来的消息

定义一个ErrorCode 代表令牌错误

如果Account服务器连接的session里面对应AccountId的Token和客户端的Token不一致,那么就代表账号出问题了

成功之后直接返回区服信息

2.5 在SceneFacotry中创建Account服务器的时候添加这个组件

总结

这一节我们完成了客户端获取服务器房间数量

在多人在线游戏里面,我们经常有很多房间的概念,或者区服的概念

客户端发送请求,拿到一个ServerInfo的集合,然后服务器接受到请求,做判断,然后将ServerInfo集合从数据库里面拿出来,然后发送回复消息给客户端

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/973833.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号