public void OpenPanel <T>(string skinPath, params object[] args) where T : PanelBase { // already open string name = typeof(T).ToString(); if (dict.ContainsKey(name)) { return; } // 画板脚本 PanelBase panel = canvas.AddComponent <T>(); panel.Init(args); dict.Add(name, panel); // 加载皮肤 skinPath = (skinPath != "" ? skinPath : panel.skinPath); GameObject skin = Resources.Load <GameObject> (skinPath); if (skin == null) { Debug.LogError("Panel.OpenPanel: Skin is NULL!!!"); } panel.skin = (GameObject)Instantiate(skin); // 坐标 Transform skinTrans = panel.skin.transform; PanelLayer pl = panel.layer; Transform parent = layerDict [pl]; skinTrans.SetParent(parent, false); // panel 的生命周期 panel.OnShowing(); panel.OnShowed(); }
/// <summary> /// Open a panel which type is skinPath. At the same time, current scene's canvas will add a same type script. /// </summary> /// <param name="skinPath">Skin path.</param> /// <param name="args">Arguments.</param> /// <typeparam name="T">Type T must inherit PanelBase</typeparam> public void OpenPanel <T> (string skinPath, params object[] args) where T : PanelBase { string name = typeof(T).ToString(); if (dict.ContainsKey(name)) { return; } PanelBase panel = canvas.AddComponent <T> (); panel.Init(args); dict.Add(name, panel); skinPath = (skinPath != "" ? skinPath : panel.skinPath); GameObject skin = Resources.Load <GameObject> (skinPath); if (skin == null) { Debug.LogError("[PanelMgr.OpenPanel] Can't find " + skinPath + " under Assets/Resources/"); } PanelLayer layer = panel.layer; Transform parent = layerDict [layer]; panel.skin = (GameObject)Instantiate(skin, parent); panel.OnShowing(); panel.OnShowed(); }
//打开面板 public void OpenPanel <T>(string skinPath, params object[] args) where T : PanelBase { //已经打开 string name = typeof(T).ToString(); if (dict.ContainsKey(name)) { return; } //面板脚本 PanelBase panel = canvas.AddComponent <T>(); panel.Init(args); dict.Add(name, panel); //加载皮肤 skinPath = (skinPath != "" ? skinPath : panel.skinPath); GameObject skin = Resources.Load <GameObject>(skinPath); if (skin == null) { Debug.LogError($"[PanelMgr]OpenPanel<{typeof(T).ToString()}> Skin is Null ,SkinPath = {skinPath}"); } panel.skin = Instantiate(skin); //坐标 Transform skinTrans = panel.skin.transform; PanelLayer layer = panel.layer; Transform parent = layerDict[layer]; skinTrans.SetParent(parent, false); //panel的生命周期 panel.OnShowing(); //动画 之后实现 panel.OnShowed(); }
public void OpenPanel <T>(string skinPath, params object[] args) where T : PanelBase { string name = typeof(T).ToString(); if (panels.ContainsKey(name)) { return; } PanelBase panel = _canvas.AddComponent <T>(); panel.Init(args); panels.Add(name, panel); skinPath = string.IsNullOrEmpty(skinPath) ? panel.SkinPath : skinPath; GameObject skin = Resources.Load <GameObject>(skinPath); if (skin == null) { Debug.LogError("[Error] PanelManager class 's OpenPanel method is error."); } panel.Skin = Instantiate <GameObject>(skin); Transform skinTrans = panel.Skin.transform; PanelLayer layer = panel.Layer; skinTrans.SetParent(panelLayers[layer], false); panel.OnShowing(); panel.OnShowed(); }
/// <summary> /// 打开面板 /// </summary> public void OpenPanel <T>(params object[] args) where T : PanelBase { //已经打开 string PanelName = typeof(T).ToString(); if (dict.ContainsKey(PanelName)) { return; } GameObject GoPanel = Resources.Load <GameObject>("Panel/" + PanelName); if (GoPanel == null) { Debug.LogError("panelMgr.Openpanel fail, Panel is null, PanelName = " + PanelName); } T panelScript = ((GameObject)Instantiate(GoPanel)).GetComponent <T>(); dict.Add(PanelName, panelScript); //坐标 Transform PanelTrans = panelScript.transform; PanelLayer layer = panelScript.layer; Transform parent = layerDict[layer]; PanelTrans.SetParent(parent, false); panelScript.Init(args); }
public IEnumerator _05_PanelLayerIsPresent() { PanelLayer panelLayer = uiFrame.GetComponentInChildren <PanelLayer>(); Assert.NotNull(panelLayer); yield return(null); }
public void OpenPanel <T>(string skinPath, params object[] args) where T : PanelBase { string name = typeof(T).ToString(); if (dict.ContainsKey(name)) { return; } PanelBase panel = canvas.AddComponent <T>(); panel.Init(args); dict.Add(name, panel); skinPath = (skinPath != "" ? skinPath : panel.skinPath); GameObject skin = Resources.Load <GameObject>(skinPath); if (skin == null) { Debug.LogError("panelMgr.OpenPanel fail, skin is null, skin path = " + skinPath); } panel.skin = (GameObject)Instantiate(skin); Transform skinTrans = panel.skin.transform; PanelLayer layer = panel.layer; Transform parent = layerDict[layer]; skinTrans.SetParent(parent, false); panel.OnShowing(); panel.OnShowed(); }
/// <summary> /// 打开一个面板,这个面板类必须继承PanelBase,运用了设计模式Templete Method /// </summary> /// <typeparam name="T"></typeparam> /// <param name="skinPath"></param> /// <param name="args"></param> public void OpenPanel <T>(string skinPath, params object[] args) where T : PanelBase { string name = typeof(T).ToString(); if (dict.ContainsKey(name))//已经打开则不必打开 { return; } PanelBase panel = canvas.AddComponent <T>();//运行时多态 panel.Init(args); dict.Add(name, panel); //加载皮肤 skinPath = (skinPath != "" ? skinPath : panel.skinPath); GameObject skin = Resources.Load <GameObject>(skinPath); if (skin == null) { Debug.LogError("Panel Open error,Resources load fail,skinpath is :" + skinPath); } panel.skin = Instantiate(skin); //坐标层级 Transform skinTrans = panel.skin.transform; PanelLayer layer = panel.layer; Transform parent = layerDict[layer]; skinTrans.SetParent(parent); skinTrans.localPosition = Vector3.zero; //Panel生命周期 panel.OnShowing(); //animtion panel.OnShowed(); }
private void Path_QueryContinueDrag(object sender, QueryContinueDragEventArgs e) { if (this.PanelLayer != null) { PanelLayer.Update(); } }
public void ChangePanelLayer(PanelLayer panelLayer, Transform uiPanel) { switch (panelLayer) { case PanelLayer.BG: uiPanel.transform.SetParent(BGParetnTrans); break; case PanelLayer.Bottom: uiPanel.transform.SetParent(BottomParetnTrans); break; case PanelLayer.Common: uiPanel.transform.SetParent(CommonParetnTrans); break; case PanelLayer.Top: uiPanel.transform.SetParent(TopParetnTrans); break; case PanelLayer.Load: uiPanel.transform.SetParent(LoadParetnTrans); break; case PanelLayer.Tip: uiPanel.transform.SetParent(TipParetnTrans); break; } }
public void ChangePanelLayer(TipConType tipContentType, PanelLayer panelLayer) { if (TypeToTipPanel.ContainsKey(tipContentType)) { //已经打开一个同类的Tip,因此是需要刷新 UIManager.Instance.ChangePanelLayer(panelLayer, TypeToTipPanel[tipContentType].transform); } }
private void InitOrder(PanelLayer layer) { // int order = (int)Enum.Parse(typeof(PanelLayer), layer.ToString(), true); Canvas cvs = _canvas.GetComponent <Canvas>(); cvs.overrideSorting = true; cvs.sortingOrder = 12; }
public static void Export_UIToTips() { exportType = 0; scriptDir = uiScriptDir; prefabDir = uiDir; pathName = uiPathName; overrideScript = overrideUI; UiLayerType = PanelLayer.Tips; Export(); }
public void ChangePanelLayer <T>(PanelLayer panelLayer) { string scriptName = typeof(T).ToString(); if (ScriptsNameToPanel.ContainsKey(scriptName)) { ChangePanelLayer(panelLayer, ScriptsNameToPanel[scriptName].transform); } else { AFLogger.e("当前并不存在 : " + scriptName + "面板"); } }
public void OpenUITip(TipData tipData, PanelLayer panelLayer = PanelLayer.Tip) { if (TypeToTipPanel.ContainsKey(tipData.tipConType)) { //已经打开一个同类的Tip,因此是需要刷新 TypeToTipPanel[tipData.tipConType].RefreshUIByData(tipData); UIManager.Instance.ChangePanelLayer(panelLayer, TypeToTipPanel[tipData.tipConType].transform); } else { //是需要新打开一个tip UITip uiTipPanel = CreateTipPanel <UITip>(100000, UIManager.Instance.GetPanleLayer(panelLayer), tipData, true); TypeToTipPanel.Add(tipData.tipConType, uiTipPanel); } }
public void OpenPanel <T>(string skinPath, params object[] args) where T : PanelBase { // try // { //已经打开 string name = typeof(T).ToString(); // Debug.Log(name); if (dict.ContainsKey(name)) { ClosePanel(name); } //return; //面板脚本 PanelBase panel = canvas.AddComponent <T>(); panel.Init(args); dict.Add(name, panel); //加载预设体 skinPath = (skinPath != "" ? skinPath : panel.skinPath); GameObject skin = Resources.Load <GameObject>(skinPath); if (skin == null) { Debug.LogError("panelMgr.OpenPanel fail, skin is null,skinPath = " + skinPath); } panel.skin = (GameObject)Instantiate(skin); //坐标 Transform skinTrans = panel.skin.transform; PanelLayer layer = panel.layer; Transform parent = layerDict[layer]; skinTrans.SetParent(parent, false); //panel的生命周期 panel.OnShowing(); panel.OnShowed(); // Debug.Log("打开完毕"); /* } * catch (Exception e) * { * Debug.Log(e.Message); * // dict.Remove(typeof(T).ToString()); * }*/ }
private GameObject CreatePanel(string name, PanelLayer layer) { string assetName = name; GameObject prefab; if (!uiRes.TryGetValue(name, out prefab)) { prefab = ResManager.LoadAsset <GameObject>(name, assetName); if (prefab == null) { return(null); } } GameObject go = Instantiate(prefab) as GameObject; go.name = assetName; SetLayer(go.transform, layer); return(go); }
//一个脚本只能存在一个实例 //一个脚本可以使用不同面板资源,skinPath可以临时自定义面板资源 public void OpenPanel <T>(string skinPath = "", params object[] args) where T : PanelBase { //检查面板实例是否已经创建,这样的话,一个面板在游戏中只能打开一个? //string name = typeof(T).ToString(); string name = typeof(T).Name; if (panelDict.ContainsKey(name)) { PanelBase oldPanel = panelDict[name]; //oldPanel.enabled = true; //和GameObject的SetActive有什么区别???作用对象不同 //oldPanel.skin.SetActive(true); int count = oldPanel.skin.transform.parent.childCount; oldPanel.skin.transform.SetSiblingIndex(count - 1); return; } //创建面板实例 PanelBase newPanel = canvas.AddComponent <T>(); newPanel.Init(args); panelDict.Add(name, newPanel); //为面板实例创建面板资源 skinPath = (skinPath != "" ? skinPath : newPanel.skinPath); GameObject skin = Resources.Load <GameObject>(skinPath); if (skin == null) { Debug.LogError("panelMgr.OpenPanel fail, skin is null,skinPath = " + skinPath); } newPanel.skin = (GameObject)Instantiate(skin); //设置面板资源层级 Transform skinTrans = newPanel.skin.transform; PanelLayer layer = newPanel.layer; Transform parent = layerDict[layer]; skinTrans.SetParent(parent, false); //自定义 newPanel.OnShowing(); newPanel.OnShowed(); }
/// <summary> /// 获取当前层最高 sorting order /// </summary> /// <param name="layer"></param> /// <returns></returns> public int GetTopSortingOrder(PanelLayer layer) { List <PanelBase> _panels = new List <PanelBase>(); foreach (KeyValuePair <PanelName, PanelBase> item in panels) { if (item.Value.layer == layer) { _panels.Add(item.Value); } } Comparison <PanelBase> comparison = new Comparison <PanelBase>((PanelBase x, PanelBase y) => { if (x.sortingOrder < y.sortingOrder) { return(-1); } else if (x.sortingOrder == y.sortingOrder) { return(0); } else { return(1); } }); _panels.Sort(comparison); // 重新排序当前layer 层的 sortingOrder int order = (int)layer; for (int i = 0; i < _panels.Count; i++) { _panels[i].sortingOrder = order + i; } return(order + _panels.Count); }
//打开面板 public void OpenPanel <T>(string skinPath, params object[] args) where T : PanelBase //T必须是PanelBase的子类 { //已经打开 string name = typeof(T).ToString(); if (dict.ContainsKey(name)) { return; } //面板脚本 PanelBase panel = canvas.AddComponent <T>(); //把脚本挂载Canvas下 panel.Init(args); //生命周期 dict.Add(name, panel); //加载皮肤 skinPath = skinPath != "" ? skinPath : panel.skinPath; //skinPath也就是该Prefab的路径 GameObject skin = Resources.Load <GameObject>(skinPath); if (skinPath == null) { Debug.LogError("panelMgr.OpenPanel fail,skin is null,skinPath = " + skinPath); } panel.skin = Instantiate(skin);//加载出来 //坐标 Transform skintrans = panel.skin.transform; //得到该界面的Layer,然后从layerDict中找到对应的Layer的Transform,赋值过去成为子物体 PanelLayer layer = panel.layer; Transform parent = layerDict[layer]; skintrans.SetParent(parent, false); //层级 //panel的生命周期 panel.OnShowing(); //预留的面板动画 //anm panel.OnShowed(); //加载结束时 }
public void OpenPanel <T>(string skinPath = "", params object[] _args) where T : PanelBase { string name = typeof(T).ToString(); if (dict.ContainsKey(name)) { GetPanel(name).skin.transform.SetAsLastSibling(); if (GetPanel(name).skin.gameObject.activeInHierarchy) { return; } GetPanel(name).skin.SetActive(true); GetPanel(name).args = _args; GetPanel(name).OnOpen(); return; } PanelBase panel = canvas.gameObject.AddComponent <T>(); panel.Init(_args); dict.Add(name, panel); skinPath = (skinPath != "" ? skinPath : panel.skinPath); GameObject skin = Resources.Load <GameObject>(skinPath); if (skin == null) { Debug.LogError("panelMgr.OpenPanelfail,skin is null,skinPath= " + skinPath); } panel.skin = (GameObject)Instantiate(skin); panel.skin.transform.SetAsLastSibling(); Transform skinTrans = panel.skin.transform; PanelLayer layer = panel.layer; Transform parent = layer_dict[layer]; skinTrans.SetParent(parent, false); InitOrder(layer); panel.OnShowing(); panel.OnShowed(); panel.OnOpen(); }
//打开面板 public void OpenPanel <T>(string skinPath, params object[] args) where T : PanelBase { //已经打开 string name = typeof(T).ToString(); if (dict.ContainsKey(name)) { return; } //面板脚本 PanelBase panel = canvas.AddComponent <T>(); panel.Init(args); dict.Add(name, panel); //加载皮肤 skinPath = skinPath != "" ? skinPath : panel.skinPath; skinPath = "Prefabs/UISkin/" + skinPath; GameObject skin = Resources.Load <GameObject>(skinPath); if (skinPath == null) { Debug.LogError("panelMgr.OpenPanel fail,skin is null,skinPath = " + skinPath); } panel.skin = Instantiate(skin); //坐标 Transform skintrans = panel.skin.transform; PanelLayer layer = panel.layer; Transform parent = layerDict[layer]; skintrans.SetParent(parent, false); //层级 //panel的生命周期 panel.OnShowing(); //预留的面板动画 //anm panel.OnShowed(); //加载结束时 }
public Transform GetPanleLayer(PanelLayer panelLayer) { Transform panelPar = null; switch (panelLayer) { case PanelLayer.BG: panelPar = BGParetnTrans; break; case PanelLayer.Bottom: panelPar = BottomParetnTrans; break; case PanelLayer.Common: panelPar = CommonParetnTrans; break; case PanelLayer.Top: panelPar = TopParetnTrans; break; case PanelLayer.Load: panelPar = LoadParetnTrans; break; case PanelLayer.Tip: panelPar = TipParetnTrans; break; case PanelLayer.NoParent: panelPar = null; break; } return(panelPar); }
/// <summary> /// 打开面板 /// </summary> public void OpenPanel <T>(string skinPath, params object[] args) where T : PanelBase { //已经打开 string name = typeof(T).ToString(); if (dict.ContainsKey(name)) { return; } //面板脚本 PanelBase panel = canvas.AddComponent <T>(); panel.Init(args); dict.Add(name, panel); //加载皮肤 skinPath = (skinPath != "" ? skinPath : panel.skinPath); GameObject skin = Resources.Load <GameObject>("Panel/" + skinPath); if (skin == null) { Debug.LogError("panelMgr.Openpanel fail, skin is null, skinPath = " + skinPath); } panel.skin = (GameObject)Instantiate(skin); //坐标 Transform skinTrans = panel.skin.transform; PanelLayer layer = panel.layer; Transform parent = layerDict[layer]; skinTrans.SetParent(parent, false); //panel的生命周期 panel.OnShowing(); Tweener tweener = skinTrans.DOLocalMoveX(-1300, 2f).From(); tweener.SetEase(Ease.InOutBack); tweener.OnComplete(() => { panel.OnShowed(); }); }
//打开面板方法 public void OpenPanel <T>(string panelPrefabPath, params object[] args) where T : PanelBase { string name = typeof(T).ToString(); if (openedPanelDict.ContainsKey(name)) { return; } PanelBase panel = UI_Root.AddComponent <T>(); //PanelBase panel = new GameObject().AddComponent<T>(); panel.Init(args); openedPanelDict.Add(name, panel); if (panelPrefabPath != "") { } else { panelPrefabPath = panel.panelPrefabPath; } GameObject panelPrefab = Resources.Load <GameObject>(panelPrefabPath); //panelPrefab.AddComponent<T>(); if (panelPrefab == null) { Debug.LogError("[ERROR]OpenPanel<T>():GameObject panelPrefab = Resources.Load<GameObject>(panelPrefabPath)"); } panel.panelPrefab = (GameObject)Instantiate(panelPrefab); Transform transform = panel.panelPrefab.transform; PanelLayer panelLayer = panel.panelLayer; Transform parent = panelLayerDict[panelLayer]; transform.SetParent(parent, false); panel.OnOpening(); panel.OnOpened(); }
public T OpenUI <T>(int UILabel, UIDataParent UIDataParent = null, PanelLayer panelLayer = PanelLayer.Common, bool isClear = false) where T : UIPanelParent { return(OpenUI <T>(UILabel, GetPanleLayer(panelLayer), UIDataParent, isClear)); }
public void OpenUITip(TipBtnType tipBtnType, TipConType tipConType, string tipStr, UnityAction EnsureEvent = null, UnityAction CancelEvent = null, PanelLayer panelLayer = PanelLayer.Tip) { TipData tipData = new TipData(); tipData.tipBtnType = tipBtnType; tipData.tipConType = tipConType; tipData.EnsureEvent = EnsureEvent; tipData.CancelEvent = CancelEvent; tipData.tipStr = tipStr; OpenUITip(tipData, panelLayer); }
private Transform GetLayer(PanelLayer layer) { return(Layer3); }
public void SetLayer(Transform trans, PanelLayer layer) { trans.SetParent(GetLayer(layer), false); }