コード例 #1
0
        private void DrawBlockButton(BlockButtonData button, int quadrant, int level)
        {
            BlockMenuDataManager bm = BlockMenuDataManager.Instance;

            GUI.changed        = false;
            button.buttonId    = EditorGUILayout.TextField("Button ID", button.buttonId);
            button.buttonName  = EditorGUILayout.TextField("Button Name", button.buttonName);
            button.buttonColor = EditorGUILayout.ColorField("Button Color", button.buttonColor);
            button.buttonPic   = EditorGUILayout.TextField("Button Pic", button.buttonPic);
            button.canClick    = EditorGUILayout.Toggle("Can Click?", button.canClick);
            if (GUI.changed)
            {
                dirty = true;
            }

            if (button.subPanel == null)
            {
                if (GUILayout.Button("Create Sub Panel"))
                {
                    button.subPanel = new BlockPanelData();
                    dirty           = true;
                }
            }
            else
            {
                DrawBlockPanel(button.subPanel, level + 1, quadrant);
            }
        }
コード例 #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
        /// <summary>
        /// 在指定象限添加一个按钮
        /// </summary>
        /// <param name="button"></param>
        /// <param name="q"></param>
        public BlockButton CreateButton(BlockPanel panel, QUADRANT q, BlockButtonData buttonData)
        {
            GameObject  buttonObj = PrefabUtils.CreateGameObjectToParent(panel.gameObject, BlockButtonPrefab);
            BlockButton button    = buttonObj.GetComponent <BlockButton>();

            // 初始化按钮
            button.Init(this, panel, q, buttonData);

            panel.SetButton(button, q);

            // 汇总按钮点击回调
            //button.cbClick += this.OnClickButton;

            buttonObj.SetActive(false);

            // 所有button在menu中留记录,以便修改
            // 这里暂时不判断按钮重名了……原则上,按钮不允许重名,可以在编辑器层面保证
            buttonDic.Add(button.buttonId, button);

            return(button);
        }
コード例 #4
0
        /// <summary>
        /// 初始化按钮
        /// </summary>
        /// <param name="panel"></param>
        /// <param name="q"></param>
        public void Init(BlockMenu menu, BlockPanel panel, QUADRANT q, BlockButtonData buttonData)
        {
            this.menu    = menu;
            currentPanel = panel;
            Quadrant     = q;

            buttonId   = buttonData.buttonId;
            buttonName = buttonData.buttonName;

            canClick = buttonData.canClick;

            transBlock = transform as RectTransform;
            transBlock.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, menu.ButtonWidth);
            transBlock.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, menu.ButtonHeight);

            transButton = uiButton.transform as RectTransform;
            transButton.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, menu.ButtonWidth);
            transButton.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, menu.ButtonHeight);


            CenterPosition = new Vector2(
                (menu.ButtonWidth + menu.ButtonInterval) * COORDINATE_X[(int)q],
                (menu.ButtonHeight + menu.ButtonInterval) * COORDINATE_Y[(int)q]);


            //uiButton.onClick.AddListener(OnClick);

            // 设置按钮标题
            SetText(buttonData.buttonName);

            // 设置颜色
            SetButtonColor(buttonData.buttonColor);

            // 设置图片
            SetButtonPic("UI/Texture/" + buttonData.buttonPic);
        }
コード例 #5
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();
            }
        }