ET6.0版本客户端流程梳理(二)- 登陆及其他逻辑梳理

上篇梳理了游戏开始初始化相关操作,并且加载了UI到场景中并且放到了对应层级里面

这里涉及与服务器的交互,这里只谈客户端的,服务器的初始化和接收等下次再说


下面来看游戏登陆相关逻辑

  • 在进入Login界面点击登陆,此时都会集中到LoginHelper类中,下面来看Login干什么了
  • 在初始化文章中我们知道在客户端创建了一个KcpComponent,通过这个组件创建一个Session。利用这个Session发送C2R_Login消息。并等待返回R2C_Login,这里call结合之前看的应该很好理解,这里梳理一下。Session存储RpcId和RpcInfo关系,然后将消息转化为内存流和操作码。然后通过Service发送,Service拿到对应Channel最终由Channel发送。最后接收到了R2C_Login。
  • 然后利用R2C_Login带回来的adress再创建一个GateSession。
  • 向GateSession加入PingComponent,组件就是向客户端不断的向Gate服务器发送消息,然后计算一下ping值
  • 然后向zoneScene添加SessionComponent,这个就是个字段组件,用来存储一个Session。这里存储了GateSession
  • 然后再向Gate发送C2G_LoginGate信息,并等待G2C_LoginGate信息的返回。得到返回则成功登陆
  • 最后触发LoginFinish事件

登陆完成后逻辑

  • LoginFinish事件就触发了展示UILobby,里面就一个进入地图。点击进入地图
  • 用刚刚存储的gateSession发送C2G_EnterMap消息,G2C_EnterMap带回来了UnitId(自己)和所有Units
  • 然后触发EnterMapFinish事件。加载地图场景并切换,移除UILobby,向zoneScene添加OperaComponent组件(操纵组件)
  • OperaComponent就是鼠标右键点击了地面,然后就会向Gate发送C2M_PathfindingResult消息,注意这个消息是IActorLocationMessage

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

友情链接更多精彩内容