/// <summary> /// 得到层级父对象 /// </summary> public Transform GetLayerFather(E_UI_layer _layer) { switch (_layer) { case E_UI_layer.Bot: return(m_bot); case E_UI_layer.Mid: return(m_mid); case E_UI_layer.Top: return(m_top); case E_UI_layer.System: return(m_system); } return(null); }
public void OpenPanel <T> (string _NextPanelName, E_UI_layer _layer = E_UI_layer.Mid, UnityAction <T> _callback = null) where T : FW.PanelBase { FW.UIMgr.Instance.ShowPanel <T> (_NextPanelName, _layer, _callback); }
public void ShowPanel <T>(string _panelName, E_UI_layer _layer = E_UI_layer.Mid, UnityAction <T> _callback = null) where T : PanelBase { // 先去隐藏的dic里找 if (m_hiedPanelDic.ContainsKey(_panelName) && !m_hiedPanelDic[_panelName].gameObject.activeInHierarchy) { var panel = m_hiedPanelDic[_panelName]; panel.Refresh(); panel.gameObject.SetActive(true); if (_callback != null) { _callback(panel as T); } m_hiedPanelDic.Remove(_panelName); return; } // 防止面板二次打开 if (m_allPanelDic.ContainsKey(_panelName)) { m_allPanelDic[_panelName].Refresh(); if (_callback != null) { _callback(m_allPanelDic[_panelName] as T); } return; } FW.ResMgr.Instance.LoadAsync <GameObject>(_panelName, (go) => { //作为canvas子对象 Transform father = m_bot; switch (_layer) { case E_UI_layer.Mid: father = m_mid; break; case E_UI_layer.Top: father = m_top; break; case E_UI_layer.System: father = m_system; break; } FW.Utility.TransformOperation.SetParent(go.transform, father); // 得到面板身上的脚本 T panel = go.GetComponent <T>(); // 处理面板创建完成后的逻辑 因为异步加载至少要等一帧 if (_callback != null) { _callback(panel); } panel.Show(); if (!m_allPanelDic.ContainsKey(_panelName)) { m_allPanelDic.Add(_panelName, panel); } }); }