Пример #1
0
        /// <summary>
        /// 显示面板
        /// </summary>
        /// <typeparam name="T">面板基类类型</typeparam>
        /// <param name="panelName">面板名称</param>
        /// <param name="layer">显示在哪一层</param>
        /// <param name="callback">最终需要执行的函数</param>
        public void ShowPanel <T>(string panelName, UI_layer layer = UI_layer.Mid, UnityAction <T> callback = null) where T : BasePanel
        {
            if (panelDic.ContainsKey(panelName))
            {
                panelDic[panelName].ShowUI();

                if (callback != null)
                {
                    callback(panelDic[panelName] as T);
                }

                return;
            }

            ResMgr.GetInstance().loadAsync <GameObject>("UI/" + panelName, (obj) =>
            {
                //把父对象设置为canvas
                //设置到相应位置
                Transform father = mid;

                Debug.Log(system.gameObject);
                switch (layer)
                {
                case UI_layer.Top:
                    father = top;
                    break;

                case UI_layer.Down:
                    father = down;
                    break;

                case UI_layer.System:
                    father = system;
                    break;
                }
                //设置父对象
                obj.transform.SetParent(father);

                //obj.name = panelName;

                //设置相对位置和大小
                obj.transform.localPosition = Vector3.zero;
                obj.transform.localScale    = Vector3.zero;

                (obj.transform as RectTransform).offsetMax = Vector2.zero;
                (obj.transform as RectTransform).offsetMin = Vector2.zero;

                T panel = obj.GetComponent <T>();

                if (callback != null)
                {
                    callback(panel);
                }

                panel.ShowUI();

                panelDic.Add(panelName, panel);
            });
        }
Пример #2
0
        /// <summary>
        /// 获得层级父对象
        /// </summary>
        /// <param name="layer"></param>
        /// <returns></returns>
        public Transform GetLayerFather(UI_layer layer)
        {
            switch (layer)
            {
            case UI_layer.Top:
                return(this.top);

            case UI_layer.Mid:
                return(this.mid);

            case UI_layer.Down:
                return(this.down);

            case UI_layer.System:
                return(this.system);
            }
            return(null);
        }