Пример #1
0
        public IPanel CreateUI(PanelSearchKeys panelSearchKeys)
        {
            var panel = UIKit.Config.LoadPanel(panelSearchKeys);

            UIKit.Root.SetLevelOfPanel(panelSearchKeys.Level, panel);

            UIKit.Config.SetDefaultSizeOfPanel(panel);

            panel.Transform.gameObject.name = panelSearchKeys.GameObjName ?? panelSearchKeys.PanelType.Name;

            panel.Info = new PanelInfo()
            {
                AssetBundleName = panelSearchKeys.AssetBundleName,
                Level           = panelSearchKeys.Level,
                GameObjName     = panelSearchKeys.GameObjName,
                PanelType       = panelSearchKeys.PanelType,
                UIData          = panelSearchKeys.UIData
            };

            UIKit.Table.Add(panel);

            panel.Init(panelSearchKeys.UIData);

            return(panel);
        }
Пример #2
0
        public IEnumerable <IPanel> GetPanelsByPanelSearchKeys(PanelSearchKeys panelSearchKeys)
        {
            if (panelSearchKeys.PanelType.IsNotNull() && (panelSearchKeys.GameObjName.IsNotNullAndEmpty() || panelSearchKeys.Panel.IsNotNull()))
            {
                return(TypeIndex.Get(panelSearchKeys.PanelType)
                       .Where(p => p.Transform.name == panelSearchKeys.GameObjName || p == panelSearchKeys.Panel));
            }

            if (panelSearchKeys.PanelType.IsNotNull())
            {
                return(TypeIndex.Get(panelSearchKeys.PanelType));
            }

            if (panelSearchKeys.Panel.IsNotNull())
            {
                return(GameObjectNameIndex.Get(panelSearchKeys.Panel.Transform.gameObject.name).Where(p => p == panelSearchKeys.Panel));
            }

            if (panelSearchKeys.GameObjName.IsNotNullAndEmpty())
            {
                return(GameObjectNameIndex.Get(panelSearchKeys.GameObjName));
            }

            return(Enumerable.Empty <IPanel>());
        }
Пример #3
0
        public void RemoveUI(PanelSearchKeys panelSearchKeys)
        {
            var panel = UIKit.Table.GetPanelsByPanelSearchKeys(panelSearchKeys).FirstOrDefault();

            if (panel != null)
            {
                UIKit.Table.Remove(panel);
            }
        }
Пример #4
0
        /// <summary>
        /// 隐藏UI
        /// </summary>
        /// <param name="uiBehaviourName"></param>
        public void HideUI(PanelSearchKeys panelSearchKeys)
        {
            var retPanel = UIKit.Table.GetPanelsByPanelSearchKeys(panelSearchKeys).FirstOrDefault();

            if (retPanel != null)
            {
                retPanel.Hide();
            }
        }
Пример #5
0
        public static void HidePanel(string panelName)
        {
            var panelSearchKeys = PanelSearchKeys.Allocate();

            panelSearchKeys.GameObjName = panelName;

            UIManager.Instance.HideUI(panelSearchKeys);

            panelSearchKeys.Recycle2Cache();
        }
Пример #6
0
        public static void ClosePanel(UIPanel panel)
        {
            var panelSearchKeys = PanelSearchKeys.Allocate();

            panelSearchKeys.Panel = panel;

            UIManager.Instance.CloseUI(panelSearchKeys);

            panelSearchKeys.Recycle2Cache();
        }
Пример #7
0
        public static void HidePanel <T>() where T : UIPanel
        {
            var panelSearchKeys = PanelSearchKeys.Allocate();

            panelSearchKeys.PanelType = typeof(T);

            UIManager.Instance.HideUI(panelSearchKeys);

            panelSearchKeys.Recycle2Cache();
        }
Пример #8
0
        /// <summary>
        /// 关闭并卸载UI
        /// </summary>
        /// <param name="behaviourName"></param>
        public void CloseUI(PanelSearchKeys panelSearchKeys)
        {
            var panel = UIKit.Table.GetPanelsByPanelSearchKeys(panelSearchKeys).FirstOrDefault();

            if (panel as UIPanel)
            {
                panel.Close();
                UIKit.Table.Remove(panel);
            }
        }
Пример #9
0
        public static UIPanel GetPanel(string panelName)
        {
            var panelSearchKeys = PanelSearchKeys.Allocate();

            panelSearchKeys.GameObjName = panelName;

            var retPanel = UIManager.Instance.GetUI(panelSearchKeys);

            panelSearchKeys.Recycle2Cache();

            return(retPanel);
        }
Пример #10
0
        public static T GetPanel <T>() where T : UIPanel
        {
            var panelSearchKeys = PanelSearchKeys.Allocate();

            panelSearchKeys.PanelType = typeof(T);

            var retPanel = UIManager.Instance.GetUI(panelSearchKeys);

            panelSearchKeys.Recycle2Cache();

            return(retPanel as T);
        }
Пример #11
0
        /// <summary>
        /// 关闭并卸载UI
        /// </summary>
        /// <param name="behaviourName"></param>
        public void CloseUI(PanelSearchKeys panelSearchKeys)
        {
            var panel = UIKit.Table.GetPanelsByPanelSearchKeys(panelSearchKeys).LastOrDefault();

            if (panel as UIPanel)
            {
                panel.Close();
                UIKit.Table.Remove(panel);
                panel.Info.Recycle2Cache();
                panel.Info = null;
            }
        }
Пример #12
0
        public static void Back <T>()
        {
            var panelSearchKeys = PanelSearchKeys.Allocate();

            panelSearchKeys.PanelType = typeof(T);

            UIManager.Instance.CloseUI(panelSearchKeys);

            panelSearchKeys.Recycle2Cache();

            Stack.Pop();
        }
Пример #13
0
        public IPanel OpenUI(PanelSearchKeys panelSearchKeys)
        {
            var retPanel = UIKit.Table.GetPanelsByPanelSearchKeys(panelSearchKeys).FirstOrDefault();

            if (retPanel == null)
            {
                retPanel = CreateUI(panelSearchKeys);
            }

            retPanel.Open(panelSearchKeys.UIData);
            retPanel.Show();
            return(retPanel);
        }
Пример #14
0
            public GameObject LoadPanelPrefab(PanelSearchKeys panelSearchKeys)
            {
                if (panelSearchKeys.PanelType.IsNotNull() && panelSearchKeys.GameObjName.IsNullOrEmpty())
                {
                    return(mResLoader.LoadSync <GameObject>(panelSearchKeys.PanelType.Name));
                }

                if (panelSearchKeys.AssetBundleName.IsNotNullAndEmpty())
                {
                    return(mResLoader.LoadSync <GameObject>(panelSearchKeys.AssetBundleName, panelSearchKeys.GameObjName));
                }

                return(mResLoader.LoadSync <GameObject>(panelSearchKeys.GameObjName));
            }
Пример #15
0
        public static UIPanel OpenPanel(string panelName, UILevel level = UILevel.Common, string assetBundleName = null)
        {
            var panelSearchKeys = PanelSearchKeys.Allocate();

            panelSearchKeys.Level           = level;
            panelSearchKeys.AssetBundleName = assetBundleName;
            panelSearchKeys.GameObjName     = panelName;

            var retPanel = UIManager.Instance.OpenUI(panelSearchKeys);

            panelSearchKeys.Recycle2Cache();

            return(retPanel as UIPanel);
        }
Пример #16
0
        public static void Back(UIPanel currentPanel)
        {
            if (currentPanel.IsNotNull())
            {
                var panelSearchKeys = PanelSearchKeys.Allocate();

                panelSearchKeys.GameObjName = currentPanel.name;

                UIManager.Instance.CloseUI(panelSearchKeys);

                panelSearchKeys.Recycle2Cache();
            }

            Stack.Pop();
        }
Пример #17
0
        public static void Back(string currentPanelName)
        {
            if (currentPanelName.IsNotNullAndEmpty())
            {
                var panelSearchKeys = PanelSearchKeys.Allocate();

                panelSearchKeys.GameObjName = currentPanelName;

                UIManager.Instance.CloseUI(panelSearchKeys);

                panelSearchKeys.Recycle2Cache();
            }

            Stack.Pop();
        }
Пример #18
0
        public void Pop()
        {
            var previousPanelInfo = mUIStack.Pop();

            var panelSearchKeys = PanelSearchKeys.Allocate();

            panelSearchKeys.GameObjName     = previousPanelInfo.GameObjName;
            panelSearchKeys.Level           = previousPanelInfo.Level;
            panelSearchKeys.UIData          = previousPanelInfo.UIData;
            panelSearchKeys.AssetBundleName = previousPanelInfo.AssetBundleName;
            panelSearchKeys.PanelType       = previousPanelInfo.PanelType;

            UIManager.Instance.OpenUI(panelSearchKeys);

            panelSearchKeys.Recycle2Cache();
        }
Пример #19
0
        public void Push(IPanel view)
        {
            if (view != null)
            {
                mUIStack.Push(view.Info);
                view.Close();

                var panelSearchKeys = PanelSearchKeys.Allocate();

                panelSearchKeys.GameObjName = view.Transform.name;

                UIManager.Instance.RemoveUI(panelSearchKeys);

                panelSearchKeys.Recycle2Cache();
            }
        }
Пример #20
0
        public virtual IPanel LoadPanel(PanelSearchKeys panelSearchKeys)
        {
            var panelLoader = new DefaultPanelLoader();

            panelLoader.LoadPanelPrefab(panelSearchKeys);

            var panelPrefab = panelLoader.LoadPanelPrefab(panelSearchKeys);

            var obj = Object.Instantiate(panelPrefab);

            var retScript = obj.GetComponent <UIPanel>();

            retScript.As <IPanel>().Loader = panelLoader;

            Debug.Log(retScript.As <IPanel>());

            return(retScript);
        }
Пример #21
0
        public static T OpenPanel <T>(IUIData uiData, PanelOpenType panelOpenType = PanelOpenType.Single,
                                      string assetBundleName = null,
                                      string prefabName      = null) where T : UIPanel
        {
            var panelSearchKeys = PanelSearchKeys.Allocate();

            panelSearchKeys.OpenType        = panelOpenType;
            panelSearchKeys.Level           = UILevel.Common;
            panelSearchKeys.PanelType       = typeof(T);
            panelSearchKeys.AssetBundleName = assetBundleName;
            panelSearchKeys.GameObjName     = prefabName;
            panelSearchKeys.UIData          = uiData;

            T retPanel = UIManager.Instance.OpenUI(panelSearchKeys) as T;

            panelSearchKeys.Recycle2Cache();

            return(retPanel);
        }
Пример #22
0
 /// <summary>
 /// 获取UIBehaviour
 /// </summary>
 /// <param name="uiBehaviourName"></param>
 /// <returns></returns>
 public UIPanel GetUI(PanelSearchKeys panelSearchKeys)
 {
     return(UIKit.Table.GetPanelsByPanelSearchKeys(panelSearchKeys).FirstOrDefault() as UIPanel);
 }