hch
6 天以前 542b1b8fe1731f9fd434019663f35b6d5e2e9b44
0312 优化引导和其他界面冲突问题,优化界面关闭
3个文件已修改
55 ■■■■■ 已修改文件
Main/Manager/UIManager.cs 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/NewBieGuidance/NewBieCenter.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Manager/UIManager.cs
@@ -325,7 +325,7 @@
        return false;
    }
    // 检查是否存在任何全屏或遮罩窗口, 暂未定义全屏可以统一勾选openMask
    public bool ExistAnyFullScreenOrMaskWin(string excludeUIName)
    {
@@ -349,6 +349,36 @@
        return exist;
    }
    //在此界面上有没任何全屏或遮罩窗口
    public bool ExistAnyFullScreenOrMaskWinAbove(string uiName)
    {
        var ui = GetUI(uiName);
        if (ui == null || !ui.IsActive())
        {
            // 如果UI不存在或未打开,默认为有被挡住
            return true;
        }
        foreach (var uiBase in uiStack)
        {
            if (uiBase == null)
            {
                continue;
            }
            if (uiBase.name == uiName)
            {
                break;
            }
            if (uiBase.IsActive() && uiBase.openMask)
            {
                return true;
            }
        }
        return false;
    }
    
    // 获取指定类型的所有UI实例
    public List<T> GetAllUI<T>() where T : UIBase
@@ -842,6 +872,10 @@
            {
                tempStack.Push(tempUI);
            }
            else
            {
                break;
            }
        }
        
        // 将临时栈中的UI重新压入栈中
@@ -926,19 +960,6 @@
        }
    }
    public void ReturnMainUI()
    {
        List<UIBase> allUI = new List<UIBase>(uiStack);
        for (int i = 0; i < allUI.Count; i++)
        {
            UIBase uiBase = allUI[i];
            if (!uiBase.isMainUI && uiBase.uiLayer < UILayer.System)
            {
                CloseWindow(uiBase);
            }
        }
    }
    
    /// <summary>
    /// 关闭所有UI
Main/System/Battle/BattleWin.cs
@@ -125,7 +125,7 @@
    
    // 新手期 玩家未做任何操作下,在主线战斗中提醒点击战锤
    void LateUpdate()
    {
        if (!needGuide)
Main/System/NewBieGuidance/NewBieCenter.cs
@@ -217,9 +217,7 @@
    {
        var config = GuideConfig.Get(_id);
        //要引导的界面上有其他界面盖住,加入队列等待其他界面关闭的时候再触发该界面引导
        // if (UIManager.Instance.ExistAnyFullScreenOrMaskWin(config.WinName))
        var ui = UIManager.Instance.GetUI(config.WinName);
        if (ui.IsActive() && ui.childrenUI != null && ui.childrenUI.Count > 0)
        if (UIManager.Instance.ExistAnyFullScreenOrMaskWinAbove(config.WinName))
        {
            //如果子界面是必须挂在该界面上切且没有蒙版盖住的可以增加判断
            if (!waitGuideWinNames.Contains(config.WinName))