Example #1
0
    /// <summary>
    /// 入栈完成之后操作,
    /// 需要注意,这些步骤不能修改,修改的话,会有问题,
    /// 步骤1,打开ReturnFullScreen界面时候,需要先复制栈顶界面在入栈本界面,
    /// 步骤2,打开全屏界面时候需要隐藏之前接口,同时隐藏PopUp layer之前所有界面,
    /// 步骤3,打开DonotReturnFullScreen界面时候,清空栈,
    /// 步骤4,入栈该界面,这个时候只有一个界面,
    /// </summary>
    /// <param name="wnd"></param>
    public static void OnPushBack(UIResInfoAsset resInfoAsset, UIStack <string> stack = null)
    {
        stack = stack == null?GetStackByPanelLayer(resInfoAsset.layerType.ToString()) : stack;

        if (stack == null)
        {
            return;
        }
        stack.DisplayList();
        UI3WndType wndType = (UI3WndType)resInfoAsset.wndType;

        //步骤1,打开ReturnFullScreen界面时候,需要先复制栈顶界面在入栈本界面,
        if (wndType == UI3WndType.ReturnFullScreen)
        {
            string lastT = stack.Peek();
            lastT = GetValid(lastT, true);
            if (stack.Have(lastT) == false)
            {
                stack.PushBack(lastT);
            }
        }

        //步骤2,打开全屏界面时候需要隐藏之前接口,同时隐藏PopUp layer之前所有界面,
        if (wndType == UI3WndType.ReturnFullScreen || wndType == UI3WndType.DonotReturnFullScreen)
        {
            HideStackWindows(resInfoAsset.layerType, resInfoAsset.name);
        }

        //步骤3,打开DonotReturnFullScreen界面时候,清空栈,
        if (wndType == UI3WndType.DonotReturnFullScreen)
        {
            //当前layer栈clear,
            stack.Clear();
        }

        //步骤4,入栈该界面,这个时候只有一个界面,
        if (GetIsPushStack(resInfoAsset.name) == true)
        {
            stack.PushBack(resInfoAsset.name);
        }
    }