Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
 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);
 }
Beispiel #3
0
        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);
                }
            });
        }