Ejemplo n.º 1
0
    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();
    }
Ejemplo n.º 2
0
    /// <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();
    }
Ejemplo n.º 3
0
    //打开面板
    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();
        }
Ejemplo n.º 5
0
    /// <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);
    }
Ejemplo n.º 6
0
        public IEnumerator _05_PanelLayerIsPresent()
        {
            PanelLayer panelLayer = uiFrame.GetComponentInChildren <PanelLayer>();

            Assert.NotNull(panelLayer);
            yield return(null);
        }
Ejemplo n.º 7
0
    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();
    }
Ejemplo n.º 8
0
    /// <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();
    }
Ejemplo n.º 9
0
 private void Path_QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
 {
     if (this.PanelLayer != null)
     {
         PanelLayer.Update();
     }
 }
Ejemplo n.º 10
0
        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;
            }
        }
Ejemplo n.º 11
0
 public void ChangePanelLayer(TipConType tipContentType, PanelLayer panelLayer)
 {
     if (TypeToTipPanel.ContainsKey(tipContentType))
     {
         //已经打开一个同类的Tip,因此是需要刷新
         UIManager.Instance.ChangePanelLayer(panelLayer, TypeToTipPanel[tipContentType].transform);
     }
 }
Ejemplo n.º 12
0
    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;
    }
Ejemplo n.º 13
0
 public static void Export_UIToTips()
 {
     exportType     = 0;
     scriptDir      = uiScriptDir;
     prefabDir      = uiDir;
     pathName       = uiPathName;
     overrideScript = overrideUI;
     UiLayerType    = PanelLayer.Tips;
     Export();
 }
Ejemplo n.º 14
0
        public void ChangePanelLayer <T>(PanelLayer panelLayer)
        {
            string scriptName = typeof(T).ToString();

            if (ScriptsNameToPanel.ContainsKey(scriptName))
            {
                ChangePanelLayer(panelLayer, ScriptsNameToPanel[scriptName].transform);
            }
            else
            {
                AFLogger.e("当前并不存在 : " + scriptName + "面板");
            }
        }
Ejemplo n.º 15
0
 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);
     }
 }
Ejemplo n.º 16
0
    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());
         * }*/
    }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        //一个脚本只能存在一个实例
        //一个脚本可以使用不同面板资源,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();
        }
Ejemplo n.º 19
0
        /// <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);
        }
Ejemplo n.º 20
0
    //打开面板
    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();   //加载结束时
    }
Ejemplo n.º 21
0
    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();
    }
Ejemplo n.º 22
0
    //打开面板
    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();   //加载结束时
    }
Ejemplo n.º 23
0
        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);
        }
Ejemplo n.º 24
0
    /// <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(); });
    }
Ejemplo n.º 25
0
        //打开面板方法
        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();
        }
Ejemplo n.º 26
0
 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));
 }
Ejemplo n.º 27
0
        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);
        }
Ejemplo n.º 28
0
 private Transform GetLayer(PanelLayer layer)
 {
     return(Layer3);
 }
Ejemplo n.º 29
0
 public void SetLayer(Transform trans, PanelLayer layer)
 {
     trans.SetParent(GetLayer(layer), false);
 }