private bool IsPanelOnShow(EUIPanelType _UIPanelType)
 {
     if (HasPanel(_UIPanelType))
     {
         return(mSpawnPanelList[_UIPanelType].gameObject.activeSelf);
     }
     return(false);
 }
    /// <summary>
    /// 隱藏介面
    /// </summary>
    public void HidePanel(EUIPanelType _UIPanelType, IUIPanelData _PanelData = null)
    {
        if (!IsPanelOnShow(_UIPanelType))
        {
            return;
        }
        IUIPanel panel;

        if (mSpawnPanelList.TryGetValue(_UIPanelType, out panel))
        {
            panel.HidePanel(_PanelData);
        }
    }
    /// <summary>
    /// 取得介面 介面在Show之後才可取得
    /// </summary>
    public IUIPanel GetUIPanel(EUIPanelType _UIPanelType)
    {
        if (!IsPanelOnShow(_UIPanelType))
        {
            return(null);
        }
        IUIPanel panel;

        if (mSpawnPanelList.TryGetValue(_UIPanelType, out panel))
        {
            return(panel);
        }
        return(null);
    }
 /// <summary>
 /// 清除介面
 /// </summary>
 public void ClearPanel(EUIPanelType _UIPanelType)
 {
     if (HasPanel(_UIPanelType))
     {
         if (mSpawnPanelList[_UIPanelType] != null)
         {
             mSpawnPanelList[_UIPanelType].OnDeletePanel();
             Object.Destroy(mSpawnPanelList[_UIPanelType].gameObject);
         }
         mSpawnPanelList.Remove(_UIPanelType);
     }
     else
     {
         Debug.LogErrorFormat("ClosePanel [{0}] not found.", name);
     }
 }
 /// <summary>
 /// 顯示介面
 /// </summary>
 public IUIPanel ShowPanel(EUIPanelType _UIPanelType, IUIPanelData _PanelData = null)
 {
     if (!mIsInit)
     {
         Debug.LogError("UI Manager not Init yet!");
         return(null);
     }
     //介面已經在顯示中
     if (IsPanelOnShow(_UIPanelType))
     {
         Debug.LogErrorFormat("[{0}] is Showing, if you want to show, please close first!!", _UIPanelType);
         return(null);
     }
     //介面已經生成,但目前未顯示
     if (HasPanel(_UIPanelType))
     {
         IUIPanel panel;
         if (mSpawnPanelList.TryGetValue(_UIPanelType, out panel))
         {
             panel.ShowPanel(_PanelData);
             return(panel);
         }
         return(null);
     }
     //介面未生成,生成新介面
     else
     {
         GameObject loadGo = null;
         if (mPanelDataList.TryGetValue(_UIPanelType, out loadGo))
         {
             GameObject panelObj = Utility.GameObjectRelate.InstantiateGameObject(GetCanvasRoot(), loadGo);
             mSpawnPanelList.Add(_UIPanelType, panelObj.GetComponent <IUIPanel>());
             panelObj.GetComponent <IUIPanel>().ShowPanel(_PanelData);
             return(panelObj.GetComponent <IUIPanel>());
         }
         Debug.LogErrorFormat("This [{0}] Type Can't Find Prefab Reference in UI Panel Reference Object", _UIPanelType);
         return(null);
     }
 }
 private bool HasPanel(EUIPanelType _UIPanelType)
 {
     return(mSpawnPanelList.ContainsKey(_UIPanelType));
 }