/// <summary> /// 面板返回 /// </summary> /// <param name="pid"></param> public void OnPanelCacheBack(PanelID pid = PanelID.None) { if (pid != PanelID.None && pid != CurShowCachePanel) { if (IsShowPanel(CurShowCachePanel)) { HidePanel(CurShowCachePanel, false, null); } ShowMain(); UIFrameManager.Instance.CheckCloseRightBtn(); Engine.Utility.Log.Error("OnPanelCacheBack return {0},{1}", pid, CurShowCachePanel); return; } if (CurShowCachePanel != PanelID.None) { //内部跳转直接成功直接return UIPanelBase panelBase = GetPanel(CurShowCachePanel); if (null != panelBase && panelBase.ExecuteReturnLogic()) { return; } } if (IsShowPanel(PanelID.TopBarPanel)) { HidePanel(PanelID.TopBarPanel, false); } if (IsShowPanel(PanelID.CommonBgPanel)) { HidePanel(PanelID.CommonBgPanel, false); } if (panelCacheStack.Count == 0) { if (IsShowPanel(CurShowCachePanel)) { HidePanel(CurShowCachePanel, false, null); } ShowMain(); UIFrameManager.Instance.CheckCloseRightBtn(); return; } bool success = false; UIPanelBase.PanelReturnData panelReturnData = panelCacheStack.Peek(); if (null != panelReturnData) { if (panelReturnData.PID == CurShowCachePanel) { panelCacheStack.Pop(); success = true; Action returenAction = () => { CurShowCachePanel = PanelID.None; if (null != panelReturnData.CachePanelList && panelReturnData.CachePanelList.Count > 0) { UIPanelBase.PanelData pd = null; for (int i = 0; i < panelReturnData.CachePanelList.Count; i++) { pd = panelReturnData.CachePanelList[i]; if (null == pd) { continue; } ShowPanel(pd.PID, pd.PrePanelData, true, data: pd.Data, jumpData: pd.JumpData); } } }; if (IsShowPanel(CurShowCachePanel)) { HidePanel(CurShowCachePanel, false, returenAction); } else { returenAction.Invoke(); } } else { Engine.Utility.Log.Error("PanelCacheBackError {0},{1}", panelReturnData.PID, CurShowCachePanel); } } if (!success) { ShowMain(); } UIFrameManager.Instance.CheckCloseRightBtn(); }