示例#1
0
    public void CloseWindow(UIPanelName name)
    {
        BaseView view = GetWindow(name);

        if (view != null)
        {
            view.OnDisable();
        }
    }
示例#2
0
    public BaseView GetWindow(UIPanelName name)
    {
        BaseView view = null;

        if (m_nameViewDic.TryGetValue(name, out view))
        {
            return(view);
        }

        return(null);
    }
示例#3
0
    /// <summary>
    /// 根据UIPanelName 打开面板
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="name"></param>
    /// <param name="isTop">是否设置最顶层</param>
    /// <param name="paramArray"></param>
    /// <returns></returns>
    public T OpenWindow <T>(UIPanelName name, bool isTop = true, params object[] paramArray) where T : BaseView
    {
        if (!m_nameViewDic.ContainsKey(name))
        {
            if (UIConfig.Instance.m_panelDic.ContainsKey(name))
            {
                UIPanelConfig panelConfig = UIConfig.Instance.m_panelDic[name];

                BaseView view = System.Activator.CreateInstance(Type.GetType(panelConfig.ClassName)) as BaseView;
                if (view != null)
                {
                    var obj = ObjectsManager.Instance.InstantiateGameObj(panelConfig.Path, false, false);
                    if (obj != null)
                    {
                        view.m_gameObj = obj;
                        view.m_trans   = view.m_gameObj.transform as RectTransform;


                        if (panelConfig.Layer == UILayer.None || panelConfig.Layer == UILayer.NormalLayer)
                        {
                            view.m_trans.SetParent(m_normalLayerTr);
                        }
                        else if (panelConfig.Layer == UILayer.BaseLayer)
                        {
                        }
                        else if (panelConfig.Layer == UILayer.TipsLayer)
                        {
                        }
                        else if (panelConfig.Layer == UILayer.TopLayer)
                        {
                        }

                        view.Init();
                        m_nameViewDic.Add(name, view);

                        if (isTop)
                        {
                            view.m_trans.SetAsLastSibling();
                        }
                        view.OnShow();

                        return(view as T);
                    }
                    else
                    {
                        Debug.LogError(string.Format("该路径{0}没有对应的prefab: {1}", panelConfig.Path, panelConfig.PrefabName));
                    }
                }
                else
                {
                    Debug.LogError("无法创建View, 请检查类名");
                }
            }
            else
            {
                Debug.LogError("不存在该Panel : " + name);
            }
        }
        else
        {
            BaseView temp = m_nameViewDic[name];
            if (temp != null)
            {
                temp.OnShow();
            }
        }

        return(null);
    }