public void ClosePanel(UIPanelTypes panelType) { BasePanel bp = GetBasePanel(panelType); if (panelDict.Contains(bp)) { while (true) { bp = panelStack.Pop(); bp.OnBeforeClose(); bp.OnClose(); if (bp.panelInfo.UIPanelType == panelType) { panelDict.Remove(bp); bp.DestoryMyself(); break; } panelDict.Remove(bp); bp.DestoryMyself(); } if (panelStack.Count >= 1) { bp = panelStack.Peek(); bp.OnResume(); } } }
public void OpenPanel(UIPanelTypes panelType) { BasePanel bp = null; PanelInfo pi = null; if (panelStack.Count > 0) { bp = panelStack.Peek(); bp.OnPause(); } if (panelDict.Contains(GetBasePanel(panelType))) { bp = GetBasePanel(panelType); panelStack.Push(bp); bp.OnShow(); } else { pi = GetPanelInfo(panelType); if (pi == null) { Debug.LogError(panelType + ":无法打开此前页面"); return; } GameObject instPanel = GameObject.Instantiate(Resources.Load(pi.PanelPath)) as GameObject; instPanel.transform.SetParent(CanvasTransform, false); BasePanel bw = instPanel.GetComponent <BasePanel>(); bw.Copy(pi); panelDict.Add(bw); panelStack.Push(bw); bw.OnBeforeEnter(); bw.OnEnter(); } }
/// <summary> /// Disables all the UI Panels and enables the given one. /// </summary> /// <param name="panelType"></param> private void SwitchPanelTo(UIPanelTypes panelType) { // Todo: Improve this, maybe replace uipaneltypes with the actual type LobbyPanel panel = null; for (int i = 0; i < _LobbyPanels.Length; i++) { if (_LobbyPanels[i].panelType == panelType) { panel = _LobbyPanels[i]; panel.gameObject.SetActive(true); break; } } if (!panel.isOverlay) { for (int i = 0; i < _LobbyPanels.Length; i++) { if (_LobbyPanels[i].panelType != panelType) { _LobbyPanels[i].gameObject.SetActive(false); } } } }
public PanelInfo GetPanelInfo(UIPanelTypes uiWindowType) { foreach (var item in panelinfoList) { if (item.UIPanelType == uiWindowType) { return(item); } } return(null); }
/// <summary> /// 通过UIWindowType获取WindowInfo /// </summary> /// <param name="uiWindowType">窗体类型</param> /// <returns>该窗体的信息</returns> public BasePanel GetBasePanel(UIPanelTypes uiWindowType) { foreach (var item in panelDict) { if (item.panelInfo.UIPanelType == uiWindowType) { return(item); } } return(null); }
public void ClosePanel(UIPanelTypes panel) { var panelHolder = uiPanels.FirstOrDefault(x => x.type == panel); panelHolder.uiPanel.SetActive(false); if (previousUIPanelController) { previousUIPanelController.OpenPanel(); currentUIPanelController = previousUIPanelController; previousUIPanelController = null; } }
public void OpenPanel(UIPanelTypes panel, bool isCache = false) { var panelHolder = uiPanels.FirstOrDefault(x => x.type == panel); panelHolder.uiPanel.SetActive(true); var controller = panelHolder.uiPanel.GetComponent <GenericUIPanelController>(); if (isCache) { previousUIPanelController = currentUIPanelController; } currentUIPanelController = controller; }
public void HidePanel(UIPanelTypes uiWindowType) { BasePanel bp = GetBasePanel(uiWindowType); if (panelDict.Contains(bp)) { while (true) { bp = panelStack.Pop(); bp.OnConceal(); if (bp.panelInfo.UIPanelType == uiWindowType) { break; } } if (panelStack.Count >= 1) { bp = panelStack.Peek(); bp.OnResume(); } } }
/// <summary> /// Fires the OpenUIPanelEvent to which the UIManager listens in order to switch UI Panels. /// </summary> /// <param name="panel"></param> protected void OpenUIPanel(UIPanelTypes panel) { OpenUIPanelEvent(panel); }
public void OnPushPanel(string panelTypeString) { UIPanelTypes panelType = (UIPanelTypes)System.Enum.Parse(typeof(UIPanelTypes), panelTypeString); UIManager.Instance.OpenPanel(panelType); }