コード例 #1
0
ファイル: MsgBox.cs プロジェクト: bkolarov/museum_hunt
 /// <summary>
 /// Show the message box with caption and buttons.
 /// </summary>
 /// <param name="id">Message Box ID</param>
 /// <param name="message">Message.</param>
 /// <param name="caption">Caption.</param>
 /// <param name="buttons">Buttons.</param>
 /// <param name="style">Style of message box</param>
 /// <param name="method">Called method with result</param>
 /// <param name="modal">if <c>true</c> then blocked other GUI elements</param>
 /// <param name="btnText0">Text for button Yes/Ok. "" - use default value</param>
 /// <param name="btnText1">Text for button No. "" - use default value</param>
 /// <param name="btnText2">Text for button Cancel. "" - use default value</param>
 private static void Show(int id, string message, string caption, MsgBoxButtons buttons, MSGBoxStyle style, DialogResultMethod method, bool modal = false, string btnText0 = "", string btnText1 = "", string btnText2 = "")
 {
     Close();
     _lastMsgBox = Instantiate(prefab);
     _lastMsgBox.BuildMessageBox(id, message, caption, buttons, style, method, modal, btnText0, btnText1, btnText2);
     if (EventSystem.current == null)
     {
         _lastMsgBox._eventer.SetActive(true);
     }
 }
コード例 #2
0
ファイル: MsgBox.cs プロジェクト: bkolarov/museum_hunt
        /// <summary>
        /// Генерация окна сообщения.
        /// </summary>
        /// <param name="mess">Сообщение.</param>
        /// <param name="caption">Заголовок.</param>
        /// <param name="btns">Кнопки.</param>
        /// <param name="style">Стиль.</param>
        /// <param name="btnText0">Текст кнопки "Да"/"Ок".</param>
        /// <param name="btnText1">Текст кнопки "Нет".</param>
        /// <param name="btnText2">Текст кнопки "Отмена".</param>
        private void BuildMessageBox(int id, string mess, string caption, MsgBoxButtons btns, MSGBoxStyle style, DialogResultMethod method, bool modal = false, string btnText0 = "", string btnText1 = "", string btnText2 = "")
        {
            //Сохраняем ID
            messageID = id;
            //Статус блокировки других GUI
            _blockPanel.SetActive(modal);
            //Сохранение метода
            calledMethod = method;
            //Устанавливаем заголовок
            this._captionText.text = caption;
            //Устанавливаем сообщение
            this._mainText.text = mess;
            //Устанавливаем цвет заголовка
            this._captionImg.color = style.captionColor;
            //Устанавливаем цвет фона
            this._backgroundImg.color = style.backgroundColor;
            //Устанавливаем цвет кнопок
            this._btnYesImg.color    = style.btnYesColor;
            this._btnNoImg.color     = style.btnNoColor;
            this._btnCancelImg.color = style.btnCancelColor;
            //Устанавливаем иконку
            this._iconImg.sprite = style.icon;
            //Устанавливаем размер
            Vector2 mainSize = new Vector2(Mathf.Clamp(Mathf.Max(_captionText.preferredWidth, 150 + _mainText.preferredWidth), 256, Screen.width), Mathf.Clamp(_mainText.preferredHeight, 256, Screen.height));
            //this._mainPanel.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, mainSize.x);
            //this._mainPanel.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, mainSize.y);

            RectTransform btnTr;
            Text          btnText;
            float         cancelW;
            float         noW;

            //Устанавливаем нужные кнопки
            switch (btns)
            {
            //Кнопка "Ок"
            case MsgBoxButtons.OK:
                //Получаем рект кнопки "Ок"
                btnTr = _btnYesImg.rectTransform;
                //Устанавливаем позицию
                btnTr.anchoredPosition = new Vector2(-25.0f, -46.46f);
                //Получаем элемент "текст"
                btnText = _btnYesImg.GetComponentInChildren <Text>();
                //Устанавливаем текст
                btnText.text = (btnText0 == "") ? "Ok" : btnText0;
                //Устанавливаем размер
                // btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Mathf.Clamp(btnText.preferredWidth + 20, 70, mainSize.x / 2 - 30));
                //btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, mainSize.y * 0.2f);
                //Отключаем кнопку "Нет"
                _btnNoImg.gameObject.SetActive(false);
                //Отключаем кнопку "Отмена"
                _btnCancelImg.gameObject.SetActive(false);
                break;

            //Кнопки "Ок" и "Отмена"
            case MsgBoxButtons.OK_CANCEL:
                //Получаем элемент "текст"
                btnText = _btnCancelImg.GetComponentInChildren <Text>();
                //Устанавливаем текст
                btnText.text = (btnText2 == "") ? "Cancel" : btnText2;
                //Получаем рект кнопки "Отмена"
                btnTr = _btnCancelImg.rectTransform;
                //Устанавливаем размер
                cancelW = Mathf.Clamp(btnText.preferredWidth + 20, 70, mainSize.x / 2 - 30);
                btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, cancelW);
                btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, mainSize.y * 0.2f);
                //Устанавливаем позицию
                btnTr.anchoredPosition = new Vector2(-25.0f, -46.46f);
                //Получаем рект кнопки "Ок"
                btnTr = _btnYesImg.rectTransform;
                //Устанавливаем позицию
                btnTr.anchoredPosition = new Vector2(-(20.0f + cancelW), -46.46f);
                //Получаем элемент "текст"
                btnText = _btnYesImg.GetComponentInChildren <Text>();
                //Устанавливаем текст
                btnText.text = (btnText0 == "") ? "Ok" : btnText0;
                //Устанавливаем размер
                btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Mathf.Clamp(btnText.preferredWidth + 20, 70, mainSize.x / 2 - 30));
                btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, mainSize.y * 0.2f);
                //Отключаем кнопку "Нет"
                _btnNoImg.gameObject.SetActive(false);
                break;

            //Кнопки "Да" и "Нет"
            case MsgBoxButtons.YES_NO:
                //Получаем элемент "текст"
                btnText = _btnNoImg.GetComponentInChildren <Text>();
                //Устанавливаем текст
                btnText.text = (btnText1 == "") ? "No" : btnText1;
                //Получаем рект кнопки "Нет"
                btnTr = _btnNoImg.rectTransform;
                //Устанавливаем размер
                noW = Mathf.Clamp(btnText.preferredWidth + 20, 70, mainSize.x / 2 - 30);
                //btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, noW);
                //btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, mainSize.y * 0.2f);
                //Устанавливаем позицию
                btnTr.anchoredPosition = new Vector2(-25.0f, -46.46f);
                //Получаем рект кнопки "Ок"
                btnTr = _btnYesImg.rectTransform;
                //Устанавливаем позицию
                btnTr.anchoredPosition = new Vector2(-165, -46.46f);
                //Получаем элемент "текст"
                btnText = _btnYesImg.GetComponentInChildren <Text>();
                //Устанавливаем текст
                btnText.text = (btnText0 == "") ? "Yes" : btnText0;
                //Устанавливаем размер
                //btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Mathf.Clamp(btnText.preferredWidth + 20, 70, mainSize.x / 2 - 30));
                //btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, mainSize.y * 0.2f);
                //Отключаем кнопку "Отмена"
                _btnCancelImg.gameObject.SetActive(false);
                break;

            case MsgBoxButtons.YES_NO_CANCEL:
                //Получаем элемент "текст"
                btnText = _btnCancelImg.GetComponentInChildren <Text>();
                //Устанавливаем текст
                btnText.text = (btnText2 == "") ? "Cancel" : btnText2;
                //Получаем рект кнопки "Отмена"
                btnTr = _btnCancelImg.rectTransform;
                //Устанавливаем размер
                cancelW = Mathf.Clamp(btnText.preferredWidth + 20, 35, mainSize.x / 3 - 30);
                btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, cancelW);
                btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, mainSize.y * 0.2f);
                //Устанавливаем позицию
                btnTr.anchoredPosition = new Vector2(-25.0f, -46.46f);
                //Получаем элемент "текст"
                btnText = _btnNoImg.GetComponentInChildren <Text>();
                //Устанавливаем текст
                btnText.text = (btnText1 == "") ? "No" : btnText1;
                //Получаем рект кнопки "Нет"
                btnTr = _btnNoImg.rectTransform;
                //Устанавливаем размер
                noW = Mathf.Clamp(btnText.preferredWidth + 20, 35, mainSize.x / 3 - 30);
                btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, noW);
                btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, mainSize.y * 0.2f);
                btnTr.anchoredPosition = new Vector2(-(20.0f + cancelW), -46.46f);
                //Получаем рект кнопки "Ок"
                btnTr = _btnYesImg.rectTransform;
                //Устанавливаем позицию
                btnTr.anchoredPosition = new Vector2(-(30.0f + cancelW + noW), -46.46f);
                //Получаем элемент "текст"
                btnText = _btnYesImg.GetComponentInChildren <Text>();
                //Устанавливаем текст
                btnText.text = (btnText0 == "") ? "Ok" : btnText0;
                //Устанавливаем размер
                btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Mathf.Clamp(btnText.preferredWidth + 20, 35, mainSize.x / 3 - 30));
                btnTr.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, mainSize.y * 0.2f);
                break;

            default:
                break;
            }
        }