/// <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); }); }
/// <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); }