/// <summary> /// 打开某个Ui /// </summary> /// <param name="panelName">Ui的名字</param> /// <param name="push">是否入栈</param> /// <param name="value">自定义数值</param> public void Open(string panelName, bool push = true, params object[] value) { if (m_uiDic.ContainsKey(panelName)) { m_uiDic[panelName].show(false, value); m_uiDic[panelName].transform.SetAsLastSibling(); m_uiDic[panelName].gameObject.SetActive(true); if (push) { if (m_uiStack.Count > 0) { if (m_uiDic.ContainsKey(m_uiStack[m_uiStack.Count - 1])) { m_uiDic[m_uiStack[m_uiStack.Count - 1]].gameObject.SetActive(false); } } m_uiStack.Add(panelName); } } else { if (ConfigManager.Instance.UIPanelConfigData.ContainsKey(panelName)) { UIPanelConfig uiData = ConfigManager.Instance.UIPanelConfigData[panelName]; if (uiData.Path != string.Empty) { GameObject go = Daemon.Instantiate(Resources.Load(uiData.Path) as GameObject); go.transform.SetParent(Canvas.transform, false); go.SetActive(false); UIBase ui = go.GetComponent <UIBase>(); m_uiDic.Add(panelName, ui); ui.show(true, value); ui.gameObject.SetActive(true); ui.transform.SetAsLastSibling(); if (push) { if (m_uiStack.Count > 0) { if (m_uiDic.ContainsKey(m_uiStack[m_uiStack.Count - 1])) { m_uiDic[m_uiStack[m_uiStack.Count - 1]].gameObject.SetActive(false); } } m_uiStack.Add(panelName); } } else { Debug.LogError("UIPath is empty!"); } } else { Debug.LogError("The UiPanel is not exist!"); } } }