示例#1
0
        private void ShowMenuEditor()
        {
            BlockMenuDataManager bm = BlockMenuDataManager.Instance;

            if (bm.menu == null)
            {
                return;
            }

            GUI.changed = false;

            bm.menu.name = EditorGUILayout.TextField("Menu Name", bm.menu.name);

            if (GUI.changed)
            {
                dirty = true;
            }

            int level = 1;


            if (bm.menu.rootPanel == null)
            {
                if (GUILayout.Button("Create Root Panel"))
                {
                    BlockPanelData panel = new BlockPanelData();
                    bm.menu.rootPanel = panel;
                    dirty             = true;
                }
            }
            else
            {
                DrawBlockPanel(bm.menu.rootPanel, level);
            }
        }
示例#2
0
        /// <summary>
        /// 创建一级菜单
        /// </summary>
        /// <param name="panelData">菜单所使用的数据</param>
        /// <param name="parentButton">打开菜单的按钮,如果为null表示根菜单</param>
        /// <returns></returns>
        private BlockPanel CreatePanel(BlockPanelData panelData, BlockButton parentButton)
        {
            //GameObject panelObj = PrefabUtils.CreateGameObjectToParent(MenuBase.gameObject, panelPrefab);
            GameObject panelObj = new GameObject("Panel");

            panelObj.transform.parent        = MenuBase.transform;
            panelObj.transform.localPosition = Vector3.zero;
            panelObj.transform.localScale    = Vector3.one;
            BlockPanel panel = panelObj.AddComponent <BlockPanel>();

            panel.menu = this;

            if (parentButton != null)
            {
                parentButton.AddNextPanel(panel);
            }

            for (int i = 0; i < panelData.buttons.Count; i++)
            {
                BlockButtonData buttonData = panelData.buttons[i];
                if (buttonData != null)
                {
                    BlockButton button = CreateButton(panel, (QUADRANT)i, buttonData);

                    if (buttonData.subPanel != null)
                    {
                        BlockPanel subPanel = CreatePanel(buttonData.subPanel, button);
                    }
                }
            }

            return(panel);
        }
示例#3
0
        public void DrawBlockPanel(BlockPanelData panel, int level, int fromQuadrant = -1)
        {
            for (int j = panel.buttons.Count; j < order.Length; j++)
            {
                panel.buttons.Add(null);
            }

            string panelTitle = level == 1 ? "Root Panel" : "Level " + level + " Panel";

            if (EditorTools.DrawHeader(panelTitle))
            {
                EditorTools.BeginContents();

                for (int i = 0; i < order.Length; i++)
                {
                    int    quadrant = order[i];
                    string name     = names[i];

                    if (EditorTools.DrawHeader(panelTitle + " -- " + names[quadrant] + " Button"))
                    {
                        EditorTools.BeginContents();

                        if (IsOppositeQuadrant(quadrant, fromQuadrant))
                        {
                            EditorGUILayout.LabelField("Can not use");
                        }
                        else
                        {
                            BlockButtonData button = panel.buttons[quadrant];

                            if (button == null)
                            {
                                if (GUILayout.Button("Create Button"))
                                {
                                    button = new BlockButtonData();
                                    panel.buttons[quadrant] = button;
                                    dirty = true;
                                }
                            }
                            else
                            {
                                DrawBlockButton(button, quadrant, level);
                                if (GUILayout.Button("Delete Button"))
                                {
                                    panel.buttons[quadrant] = null;
                                    dirty = true;
                                }
                            }
                        }
                        EditorTools.EndContents();
                    }
                }

                if (GUI.changed)
                {
                    dirty = true;
                }

                EditorTools.EndContents();
            }
        }