public void CloseWindow(UIPanelName name) { BaseView view = GetWindow(name); if (view != null) { view.OnDisable(); } }
public BaseView GetWindow(UIPanelName name) { BaseView view = null; if (m_nameViewDic.TryGetValue(name, out view)) { return(view); } return(null); }
/// <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); }