03-客户端跳转与服务器匹配流程

  • 302切换状态机

房间初始化的时候要设置状态机,每个房间都有一个状态机,状态机用字典FSM存储,房间初始化之后进入到确认状态,再开发确认状态对应的逻辑

303确认匹配数据推送

优化部分:SendMsg在5V5里面把每个玩家的信息发过去,在SendMsg里面的底层每次都要序列化,可以先将其序列化出来

  • 304PETimer计时服务

发送初始数据之后,等待客户端的每一次确认,然后再广播出去。如果玩家在匹配成功的界面不同意进入

此时应由TimerSvc倒计时30s解散房间

  • 305客户端跳转匹配确认界面

初始化定义倒计时,在本地定义倒计时就行,不需要很精确

  • 306刷新匹配确认显示

常规拼UI,先处理左边一半遍历左边,若只有一个人匹配需将其他Player SetActive设置为false

  • 317广播英雄选择数据

扩展:地图的更好可以参考选人的方式如何做,模式是一样的

  • 319加载战斗地图

private Action prgCB = null;
    /// <summary>
    /// 异步场景加载
    /// </summary>
    /// <param name="sceneName">场景名字</param>
    /// <param name="loadRate">加载进度</param>
    /// <param name="loaded">加载完成通知服务器</param>
    public void AsyncLoadScene(string sceneName,Action<float> loadRate,Action loaded)
    {
        AsyncOperation sceneAsync=SceneManager.LoadSceneAsync(sceneName);
        prgCB = () =>
        {
            float progress = sceneAsync.progress;//获取到加载进度
            loadRate?.Invoke(progress);//加载过程中每帧回调,以反应当前进度至loadRate
            if (progress == 1) { 
                loaded?.Invoke();
                prgCB = null;
                sceneAsync = null;
            }
        };
    }
  • 322服务器切换战斗状态

开始做战斗,所有客户端保持一致通过服务器的帧进行驱动的,个人加载完本地资源之后是不能进行战斗的,必须请求服务器个人加载完毕,是否开始战斗。服务器收到所有人的请求之后确认所有人都已经加载资源完成,通知所有客户端开始进行战斗,驱动所有战斗的进行

playWnd.SetWndState();//PlayWnd UIPpefab的打开
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值