Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 用Data数据对Menu进行初始化
        /// </summary>
        /// <param name="data"></param>
        public void BuildMenu(BlockMenuData data)
        {
            menuName = data.name;

            BlockPanel panel = null;

            panel     = CreatePanel(data.rootPanel, null);
            rootPanel = panel;
        }
Ejemplo n.º 3
0
        /*
         * private void DoClick(Hashtable param)
         * {
         *
         *  if (cbClick != null)
         *  {
         *      cbClick(this);
         *  }
         * }
         */

        /// <summary>
        /// 给按钮添加下一级面板
        /// </summary>
        /// <param name="next"></param>
        public void AddNextPanel(BlockPanel next)
        {
            this.nextPanel    = next;
            next.parentButton = this;

            Vector3 pos = Vector3.zero;

            pos.x = currentPanel.centerPosition.x + CenterPosition.x + COORDINATE_X[(int)Quadrant] * (menu.ButtonWidth + menu.ButtonInterval);
            pos.y = currentPanel.centerPosition.y + CenterPosition.y + COORDINATE_Y[(int)Quadrant] * (menu.ButtonHeight + menu.ButtonInterval);

            next.centerPosition = pos;
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 焦点进入时的处理
        /// </summary>
        /// <param name="eventData"></param>
        public void OnGazeEnterObject()
        {
            if (!currentPanel.GetHasShow())
            {
                return;
            }

            // 播放动画
            tweenScaleForPointEnter.PlayForward();

            // 准备打开子面板
            if (nextPanel != null)
            {
                if (pointEnterTimerKey <= 0)
                {
                    pointEnterTimerKey = TimerManager.Instance.RegisterTimer(TimerShowNextPanel, 0.2f, 1);
                }
            }

            // 检查同级其他按钮,如果有面板,则关闭
            BlockPanel p = this.currentPanel;

            p.HideOthersSubPanel(this.Quadrant);

            if (nextPanel != null)
            {
                nextPanel.SetKeepShow(true);
            }

            currentPanel.SetKeepShow(true);

            if (canClick)
            {
                menu.uiCanBeClick = true;
            }

            // 这里屏蔽GazeGestureManager
            //GazeGestureManager.Instance.StopCapture();
        }
Ejemplo n.º 6
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);
        }