Передайте переменные типа integer или float в виджет с помощью функций преобразования ToText(Int) и ToText(Double). Функции преобразования «ToText» преобразуют переменную типа integer или float в тип text, который можно отображать в виджете. Переменная не будет отображаться в виджете, если она имеет нетекстовый тип.
На самом деле функция преобразования в редакторе называется To Text (Double), а не To Text (Double), но они служат для одной же цели.
Ниже приведены два примера, иллюстрирующие использование обеих функций преобразования.
Пример To Text (Int): пользовательский виджет «Управление заданиями» отслеживает прогресс игрока, когда он собирает определённое количество бекона.
Пример To Text (Double): пользовательский виджет «Всплывающее диалоговое окно» открывает всплывающее окно с возможными ответами на вопросы викторины. Если до истечения времени ответ выбран не будет, для завершения отсчёта будет использован таймер обратного отсчёта.
To Text (Int)
В этом примере создаётся пользовательский виджет «Управление заданиями» для отслеживания количества бекона, собираемого игроком. Выполните действия из документа «Всплывающие окна интерфейса», чтобы создать пользовательский виджет, и назовите его Tracker_Widget.
Настройка виджета
Чтобы настроить Tracker_Widget, добавьте следующие виджеты в представленном ниже порядке на панель «Иерархия»:
Наложенный слой
Изображение (вложите под наложение и переименуйте в Background («Фон»))
Стековое поле (вложите в наложение)
Текстовый блок (вложите под первое стековое поле и переименуйте на Title («Название»), это название вашего устройства «Управление заданиями»{Tracker Title}")
Стековое поле (вложите под первое стековое поле)
2 текстовых блока (вложите под второе стековое поле. Переименуйте первый текстовый блок на CurrentValue "{Current}", а второй текстовый блок — на текст описания «Бекона собрано»)
Вам нужен текстовый блок, в котором будет отображаться текущее количество бекона, собранное игроком. Tracker_Widget настроен на включение текстового блока TrackerTitle, чтобы свойство Name могло передаваться из модели просмотра в Текущий текстовый блок:
Настройте свой виджет с помощью этих же параметров.
Вот что игрок видит в игре, когда собирает бекон:
Настройка функции преобразования
Функция преобразования To Text (Int) используется для передачи текущего количества бекона в устройство «Управление заданиями» через текстовый блок CurrentValue.
Чтобы настроить функции преобразования To Text (Int), создайте привязки представления и привяжите значения, которые вы установили в виджете, к устройству «Управление заданиями».
Перейдите по пути: Окно > Просмотр привязок.
Выберите текстовый блок CurrentValue в своём виджете и нажмите +Добавить виджет в окне Просмотр привязок.
В левом поле просмотра привязок выберите CurrentValue > Текст. Так текст будет передаваться в свойство text текстового блока CurrentValue.
Нажмите на поле справа и выберите Функции преобразования > To Text (Integer). В привязке текстового блока CurrentValue появится ряд полей.
Подробнее о том, для чего нужно каждое поле: Свойства To Text (Int/Double).
Это позволит запустить функцию преобразования To Text (Integer), которая принимает значение и возвращает переменную типа text для передачи в свойство text текстового блока CurrentValue.
Нажмите на значок цепочки рядом со Значением и выберите MVVM_UEFN_Tracker > Значение.
Переменная Значение из модели просмотра «Управление заданиями» передаётся в функцию преобразования To Text (Integer). В результате переменная «Значение» выводится как свойство text, которое затем передаётся в свойство text текстового блока CurrentValue.
Окончательный результат
Чтобы использовать новый виджет, перетащите устройство Управление заданиями в проект, а затем выполните следующие действия:
На панели «Сведения» устройства «Управление заданиями» выберите для поля «Виджет HUD-интерфейса» свой виджет Track_Widget.
Устройство «Управление заданиями» можно использовать для отслеживания счёта, а для тестирования этой функции можно использовать подбираемые объекты на уровне.
Всякий раз, когда игрок собирает кусочки бекона, счёт в устройстве «Управление заданиями» автоматически увеличивается на количество очков, заданное для каждого кусочка бекона.
To Text (Double)
В этом примере используйте рабочий процесс Вариант модального диалогового окна из документа Всплывающие окна интерфейса для создания пользовательского виджета всплывающего диалогового окна под названием Trivia_Widget. Trivia_Widget отображает вопросы викторины из Fortnite, на которые нужно ответить до истечения заданного времени.
Настройка виджета
Нажмите правой кнопкой мыши в Каталоге ресурсов, чтобы открыть контекстное меню.
В контекстном меню выберите Пользовательский интерфейс > Схема создания виджетов > Вариант модального диалогового окна.
Откройте виджет и добавьте следующие контейнеры на панель «Иерархия» в порядке, показанном на изображении:
Наложенный слой
Изображение
3 стековых поля
Наложение вмещает целый виджет в качестве родительского контейнера. Далее, используйте виджет изображения в качестве фона и несколько вложенных стековых полей для всего контента (тексты и кнопки).
Добавьте текстовые блоки и кнопки в свои стековые поля как показано ниже.
Поместите текстовые блоки TimeLeft и TimeFlavorText в стековое поле, чтобы значение TimeLeft динамически обновлялось через привязку просмотра к переменной «Оставшееся время»" в модели просмотра всплывающего диалогового окна.
Добавьте кнопки в виде решётки 2x2. Поскольку кнопки находятся в решётке 2x2, используйте Однородную панель решётки вместо стекового поля. Нажмите правой кнопкой мыши на Container_Buttons > Заменить на… > Однородная панель решётки.
Однородная панель решётки позволяет быстро организовать дочерние виджеты в шаблоне решётки. Вы также можете быстро задать отступ ячейки для каждого дочернего элемента.
Выберите каждую кнопку по отдельности в иерархии, чтобы выделить кнопку в главном окне конструктора.
В главном окне конструктора нажмите на стрелки, окружающие кнопку, чтобы переместить кнопку в определённую строку или столбец, где вы хотите её разместить.
В примере ниже кнопки расположены слева направо и сверху вниз. Кнопки переименованы в Button1, Button2, Button3 и Button4.
На панели «Сведения» задайте для параметра Макет дочернего элемента > Отступ ячейки значение 16 пикселей для Container_Buttons.
Настройте это значение с учётом параметров вашего дизайна.
В Стековом поле контента добавьте кнопку «Заглушить», которую позже можно будет использовать в качестве кнопки закрытия.
Добавьте несколько разделителей между контейнерами, чтобы сделать контент более удобочитаемым. Это можно сделать, добавив виджет изображения там, где должны быть пробелы, а затем задав следующие настройки на панели «Сведения»:
Кисть > Рисовать как = Нет
Размер изображения (значения X и Y) = 35 (можно увеличить или уменьшить в зависимости от вашего дизайна)
Это лёгкий способ управления расстоянием между элементами интерфейса без использования отступов.
Отредактируйте текст кнопки, чтобы её можно было легко идентифицировать.
Откройте папки Fortnite > Интерфейс и создайте экземпляр материала M_UI_Rectangle для создания фонового материала для всплывающего окна викторины.
В UMG откройте пользовательский виджет и выберите виджет Фоновое изображение, а затем в поле Кисть > Изображение выберите только что созданный экземпляр материала.
Добавьте отступ в 32 пикселя в стековое поле контента, чтобы сделать всплывающее окно более удобочитаемым.
Настройка функции преобразования
Привязка откликов на кнопки в этой документации не описана. Вместо этого в уроке рассматривается привязка текста TimeLeft к переменной типа float для определения Оставшегося времени.
Перейдите по пути: Окно > Просмотр привязок.
На панели «Иерархия» выберите виджет текстового блока TimeLeft. В окне Просмотр привязок нажмите +Добавить виджет.
В левом поле выберите TimeLeft > Текст. Так некоторое значение будет передаваться в свойство text блока TimeLeft.
В правом поле выберите CreativeModalDialogViewmodel > Оставшееся время. Затем выберите Функции преобразования > To Text (Double).
При наведении курсора на переменную можно увидеть, что это значение типа float. Функция преобразования To Text (Double) предоставляет возможность преобразования значения типа Double/ Float в текстовую переменную и отображает их в интерфейсе.
В окне привязки просмотра отображается ряд полей.
Подробнее об этих полях: раздел Свойства To Text (Int / Double) данного документа.
Нажмите на значок цепочки рядом со Значением и выберите CreativeModalDialogViewmodel > Оставшееся время >Выбрать.
Переменная «Оставшееся время» передаётся в функцию преобразования To Text (Double), которая выводит значение типа float в формат типа text, который может считать ваш интерфейс. Ваш интерфейс будет точно отображать время, оставшееся до закрытия виджета «Всплывающее диалоговое окно».
Окончательный результат
Перетащите устройство «Всплывающее диалоговое окно» в ваш проект и выполните следующее:
В устройстве «Всплывающее диалоговое окно» выберите для созданного вами Класса переопределения шаблона Trivia_Widget.
Выберите «Использовать время ожидания диалогового окна»
Задайте для параметра «Длительность ожидания» значение 6 секунд или любое другое время, которое, по вашему мнению, будет достаточно для игроков, чтобы увидеть всплывающее окно и прочитать текст в нём.
Теперь после отображения виджета «Всплывающее диалоговое окно» вы увидите, что время на таймере внутри всплывающего окна уменьшается каждую секунду.
Свойства To Text (Int/Double)
В функции преобразования To Text (Int) есть ряд полей. To Text (Double) использует те же поля, если не указано иное:
Значение : целочисленная переменная для передачи в функцию преобразования.
Всегда со знаком : добавляет положительный или отрицательный знак к префиксу текстового вывода, указывающий, является ли значение положительным или отрицательным. Если значение положительное, оно выводит текст как +{Value}. Если оно отрицательное, выводится текст как -{Value}.
Использовать группировку: определяет, будут ли значения записаны единым числом или с использованием разделителя, когда значение больше 1000. При использовании группировки будут использоваться региональные настройки вашего компьютера. Если настройки включены, текст будет выводиться как 1000. Если отключены, текст будет выводиться как 1000.
Мин. количество целых цифр : минимальное количество целых цифр, отображаемое в тексте. Значение по умолчанию — 1. Если задать мин. значение больше 1, то для целых чисел с числом цифр, меньшим мин. количества, будут отображаться нули. Например, если для мин. количества целых цифр задано значение 3, а для текущего значения задано значение 5, текст будет выводиться как 005.
Макс. количество целых цифр: максимальное количество целых цифр, отображаемое в тексте. Значение по умолчанию — 354. Это позволит отображать только макс. количество цифр.
Минимальное количество цифр дробной части (только для To Text (Double)): минимальное количество цифр, отображаемых после десятичного разделителя. Значение по умолчанию — 0.
Макс. количество цифр дробной части (только для To Text (Double)): максимальное количество цифр, отображаемых после десятичного разделителя. Значение по умолчанию — 3.
Режим округления (только для To Text (Double)): определяет, как значение типа Float/Double округляется до ближайшего числа.
| Тип | Описание | Пример |
|---|---|---|
Половина до целого числа | Округляет до ближайшего целого, при равноудалённых значениях округляет до ближайшего целого числа | 1,5 становится равным 2, 0,5 становится равным 0 |
Половина от нуля | Округляет до ближайшего целого, при равноудалённых значениях округляет до значения, которое дальше от нуля | –0,5 становится равным –1,0, 0,5 становится равным 1,0 |
Половина до нуля | Округляет до ближайшего целого или, если разница одинакова, то до более близкого к нулю | –0,5 становится равным 0, 0,5 становится равным 0. |
Из нуля | Округляет до значения, наиболее удаленного от нуля, "большего" по абсолютной величине | 0,1 становится равным 1, –0,1 становится равным –1 |
К нулю | Округляет до целого значения, меньшего по абсолютному значению | 0,1 становится равным 0, –0,1 становится равным 0 |
К отрицательной бесконечности | Округляет до значения, которое является более отрицательным | 0,1 становится равным 0, –0,1 становится равным –1 |
К положительной бесконечности | Округляет до значения, которое является более положительным | 0,1 становится равным 1, –0,1 становится равным 0 |