hch
5 天以前 9c5ded3e7d1688e66c192faa314681b1d517c10b
339 游戏应用流程测试 - 被服务端踢之后无法登录问题
6个文件已修改
31 ■■■■ 已修改文件
Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Main.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Manager/StageManager.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Equip/EquipModel.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Equip/ItemsOnFloor.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
@@ -12,10 +12,12 @@
    public static event Action switchAccountEvent;
    public static bool isAfterPlayerDataInitialize = false; //可区分断线重连还是完全重登; 切到登录场景会重置为false,故可判断断线重连
    public static uint playerIdBuf = 0;
    public static ulong loginPackUID;   //登录的封包起始,断线重连等用于过滤旧包(如主线战斗会收集)
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        loginPackUID = vNetPack.packUID;
        Debug.LogFormat("0102 主工程 DTCDone:{0}", vNetPack.ToString());
        var package = vNetPack as H0102_tagCDBPlayer;
        // StageLoadTimeOutCatcher.RecordProtocol(vNetPack.socketType, "0102", DateTime.Now);
Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs
@@ -27,10 +27,10 @@
        if (!finishedLogin)
        {
            finishedLogin = true;
            //服务端每次切场景都会通知这个封包, 增加首次地图登录成功事件(如果服务端存在多场景切换的情况)
            playerLoginOkEvent?.Invoke();
        }
        finishedLogin = true;
        if (PlayerDatas.Instance.baseData.UseHarmerCount == 0)
        {
            //防范请求
Main/Main.cs
@@ -38,8 +38,6 @@
#endif
        StageManager.Instance.ToLoginScene();
        ClearGameData();
    }
    public static async UniTask InitManagers()
@@ -111,6 +109,7 @@
    {
        //  前面有重新InitManagers了 这里就不在做清除
        // ReleaseMgrs();
        ClearGameData();
    }
    private static void ReleaseMgrs()
Main/Manager/StageManager.cs
@@ -48,6 +48,7 @@
        Main.OnSwitchToLoginScene();
        currentStage = StageName.Login;
        UIManager.Instance.OpenWindow<LaunchBackGroundWin>();
        UIManager.Instance.OpenWindow<LoginWin>();
    }
@@ -59,6 +60,7 @@
        SceneManager.LoadSceneAsync("Login");
        Main.OnSwitchToLoginScene();
        currentStage = StageName.Login;
        UIManager.Instance.OpenWindow<LaunchBackGroundWin>();
        UIManager.Instance.OpenWindow<LoginWin>();
Main/System/Equip/EquipModel.cs
@@ -32,7 +32,7 @@
    public override void Init()
    {
        DTCA814_tagMCMakeItemAnswer.MakeItemAnswerEvent += OnEquipResult;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += BeforePlayerDataInitialize;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitialize;
        EventBroadcast.Instance.AddListener<string, BattleDrops, Action>(EventName.BATTLE_DROP_ITEMS, OnDropEvent);
        EventBroadcast.Instance.AddListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
        EventBroadcast.Instance.AddListener<string>(EventName.RECORDPLAYER_END, RecordPlayerEnd);
@@ -42,7 +42,7 @@
    public override void Release()
    {
        DTCA814_tagMCMakeItemAnswer.MakeItemAnswerEvent -= OnEquipResult;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= BeforePlayerDataInitialize;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= BeforePlayerDataInitialize;
        EventBroadcast.Instance.RemoveListener<string, BattleDrops, Action>(EventName.BATTLE_DROP_ITEMS, OnDropEvent);
        EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
        EventBroadcast.Instance.RemoveListener<string>(EventName.RECORDPLAYER_END, RecordPlayerEnd);
@@ -62,6 +62,11 @@
    void BeforePlayerDataInitialize()
    {
        if (UIManager.Instance.IsOpened<EquipExchangeWin>())
        {
            //先关闭,后续再处理掉落
            UIManager.Instance.CloseWindow<EquipExchangeWin>();
        }
        selectFloorEquip = null;
        waitEquipOP.Clear();
        lastShowEquipIndex = -1;
@@ -240,6 +245,10 @@
    /// <param name="autoDecompose"></param>
    public void SendEquipOP(ushort[] itemIndexList, byte opType, bool autoDecompose = false)
    {
        if (!DTC0403_tagPlayerLoginLoadOK.finishedLogin)
        {
            return;
        }
        if (opType == 2 && waitEquipOPPack) return;
        // NoteFloorEquip(itemIndexList, opType);
@@ -300,6 +309,9 @@
        if (equip == null)
            return false;
        if (!DTC0403_tagPlayerLoginLoadOK.finishedLogin)
            return false;
        // if (!IsEquip(equip))
        //     return false;
@@ -328,7 +340,7 @@
        selectFloorEquip = GetSelectFloorEquip();
        if (selectFloorEquip == null)
            return false;
        UIManager.Instance.OpenWindow<EquipExchangeWin>();
        return true;
Main/System/Equip/ItemsOnFloor.cs
@@ -42,8 +42,8 @@
    {
        //bug记录:因为断线重连直接销毁界面导致OnEnable二次触发中间没有触发OnDisable,出现多次掉落的现象
        // 已经调整断线重连逻辑,后续观察返回登录界面情况
        EquipModel.Instance.OnItemDropEvent -= NotifyPlayItemDrop;
        PackManager.Instance.DeleteItemEvent -= DeleteDropItem;
        // EquipModel.Instance.OnItemDropEvent -= NotifyPlayItemDrop;
        // PackManager.Instance.DeleteItemEvent -= DeleteDropItem;
        //主界面打开和显隐都要刷新
        Display(true, EquipModel.Instance.lastDropIndexs);
        EquipModel.Instance.OnItemDropEvent += NotifyPlayItemDrop;