Текст в Unity
Текст является одним из наиболее важных компонентов голографических приложений. Для отображения текста в Unity можно использовать три типа текстовых компонентов: текст пользовательского интерфейса, сетка трехмерного текста и текстовая сетка Pro. По умолчанию текст пользовательского интерфейса и сетка трехмерного текста выглядят размытыми и слишком большими. Изменение нескольких переменных приводит к более четкому, более качественному тексту с управляемым размером в HoloLens. Вы можете повысить качество отрисовки, применив коэффициент масштабирования для получения правильных измерений при использовании компонентов текста пользовательского интерфейса и сетки трехмерного текста.

Размытый текст по умолчанию в Unity
Работа с трехмерными текстами (сеткой текста) и текстом пользовательского интерфейса Unity
В Unity предполагается, что все новые элементы, добавленные в сцену, имеют один размер единицы Unity или масштаб 100 % преобразования. Одна единица Unity преобразуется примерно в 1 метр на HoloLens. Для шрифтов ограничивающий прямоугольник для 3D TextMesh по умолчанию имеет высоту около 1 метра.

3D-текст (сетка текста) по умолчанию в Unity занимает одну единицу Unity, которая составляет 1 метр
Большинство визуальных конструкторов используют точки для определения размеров шрифтов в реальном мире. Есть около 2835 (2834,64566639962) точек в 1 метре. На основе преобразования системы точек в 1 метр и размера шрифта Сетки текста Unity по умолчанию 13, простая математика 13, разделенная на 2835, равна 0,0046 (0,004586111116, чтобы быть точным), что обеспечивает хорошую стандартную шкалу для начала (некоторые могут округлить до 0,005). Масштабирование текстового объекта или контейнера до этих значений позволит не только преобразовывать размеры шрифтов 1:1 в программе разработки, но и обеспечит стандарт, позволяющий поддерживать согласованность во всем интерфейсе.

Масштабирование значений для 3D-текста и текста пользовательского интерфейса Unity

Сетка 3D-текста Unity с оптимизированными значениями
При добавлении пользовательского интерфейса или текстового элемента на основе холста в сцену разница в размерах еще больше. Различия в двух размерах примерно равны 1000 %, что приведет к тому, что коэффициент масштабирования для текстовых компонентов пользовательского интерфейса составляет 0,00046 (0,0004586111116, если быть точным) или 0,0005 для округленного значения.

Текст пользовательского интерфейса Unity с оптимизированными значениями
На значение по умолчанию любого шрифта может повлиять размер текстуры этого шрифта или способ импорта шрифта в Unity. Эти тесты были выполнены на основе шрифта Arial по умолчанию в Unity, а также другого импортированного шрифта.
Работа с Text Mesh Pro
С помощью Unity Text Mesh Pro можно обеспечить качество отрисовки текста. Он поддерживает четкие контуры текста независимо от расстояния с помощью метода подписанного поля расстояния (SDF). Используя тот же метод вычисления, который мы использовали выше для сетки трехмерного текста и текста пользовательского интерфейса, мы можем найти правильные значения масштабирования для использования с обычными типографическими точками. Так как шрифт 3D Text Mesh Pro по умолчанию с размером 36 имеет ограничивающий размер 2,5 единиц Unity (2,5 м), мы можем использовать значение масштабирования 0,005, чтобы получить размер точки. Размер текстовой сетки Pro в меню пользовательского интерфейса по умолчанию ограничен 25 единицами Unity (25 м). Это дает нам 0,0005 для значения масштабирования.

Масштабирование значений для текста и пользовательского интерфейса Unity 3D
Рекомендуемый размер текста
Как и следовало ожидать, размеры типов, которые мы используем на пк или планшете (обычно от 12 до 32 пт), выглядят небольшими на расстоянии 2 метров. Это зависит от характеристик каждого шрифта, но в целом рекомендуемый минимальный угол обзора и высота шрифта для удобочитаемости составляет около 0,35°-0,4°/12,21-13,97 мм на основе наших исследований пользователей. Это примерно 35-40 пт с коэффициентом масштабирования, представленным выше.
Для ближнего взаимодействия на 0,45 м (45 см) минимальный угол обзора и высота шрифта 0,4°-0,5°/3,14–3,9 мм. Это примерно 9-12 пт с коэффициентом масштабирования, представленным выше.

в ближнем и дальнем диапазоне взаимодействия
Минимальный размер разборчивого шрифта
| Расстояние | Угол обзора | Высота текста | Размер шрифта |
|---|---|---|---|
| 45 см (расстояние прямой манипуляции) | 0.4°-0.5° | 3,14–3,9 мм | 8.9–11.13pt |
| 2 м | 0.35°-0.4° | 12,21–13,97 мм | 34.63-39.58 pt |
Удобный размер удобочитаемого шрифта
| Расстояние | Угол обзора | Высота текста | Размер шрифта |
|---|---|---|---|
| 45 см (расстояние прямой манипуляции) | 0.65°-0.8° | 5,1–6,3 мм | 14.47-17.8 pt |
| 2 м | 0.6°-0.75° | 20,9–26,2 мм | 59.4-74.2 пт |
Segoe UI (шрифт по умолчанию для Windows) хорошо работает в большинстве случаев. Однако старайтесь не использовать светлые или полулегкие семейства шрифтов небольшого размера, так как тонкие вертикальные штрихи будут вибрировать и ухудшать разборчивость. Современные шрифты с достаточной толщиной штриха хорошо работают. Например, Helvetica и Arial выглядят великолепно и разборчивы в HoloLens с регулярными или смелыми весами.

Расстояние, угол и высота текста
Текст с помощью набора средств Смешанная реальность версии 2
Качество отрисовки резкого текста с правильным измерением
На основе этих факторов масштабирования мы создали заготовки текста с текстом пользовательского интерфейса и сеткой трехмерного текста. Разработчики могут использовать эти заготовки для получения четкого текста и согласованного размера шрифта.

Качество отрисовки резкого текста с правильным измерением
Шейдер с поддержкой окклюзии
Материал шрифта по умолчанию в Unity не поддерживает загораживание. По этой причине вы увидите текст за объектами по умолчанию. Мы добавили простой шейдер, поддерживающий окклюзию. На рисунке ниже показан текст с шрифтом по умолчанию (слева) и текстом с правильной окклюзией (справа).

Шейдер с поддержкой окклюзии
Следующий этап разработки
Если вы следите за путь разработки Unity, который мы изложили, вы находитесь в разгаре изучения основных стандартных блоков MRTK. Отсюда вы можете перейти к следующему стандартному блоку:
Или перейдите к возможностям и API платформы смешанной реальности:
Вы можете в любой момент вернуться к этапам разработки для Unity.
См. также раздел
- Заготовка текста в MRTK
- Оформление текста
Как отрисовать текст поверх объектов которые генерируются на карту с помощью скрипта (Unity)?

Это 2Д проект в Unity. Текст отображается только в канвасе, а объекты поверх которых нужно отрисовывать текст находятся вне канваса. Как отрисовать текст поверх объектов которые генерируются на карту с помощью скрипта ?
Отслеживать
задан 4 авг 2016 в 11:37
Pave Teplyanskiy Pave Teplyanskiy
100 3 3 серебряных знака 7 7 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Самый удобный вариант сделать еще один Canvas и настроить его RenderMode на вывод в мировых координатах или координатах камеры. Только позицию для текста вам придется определять самостоятельно. Я бы установил WorldSpace и выставлял текст в нужную позицию поближе(через ось Z) чем объект для которого он рисуется, чтобы текст не перекрывался.
Отслеживать
ответ дан 6 авг 2016 в 16:25
2,680 1 1 золотой знак 12 12 серебряных знаков 27 27 бронзовых знаков
Можно прибегнуть к способу, с использованием Sorting Layer . Используйте слой отрисовки, чтобы отрисовать объект поверх других, данный слои нужны, для упорядочивания спрайтов, вместо использования координаты z.
Или же прочесть следующий материал (мануал по тэгам и слоям отрисовки): https://docs.unity3d.com/Manual/class-TagManager.html
Отслеживать
ответ дан 17 авг 2016 в 11:41
Jasur Sadikov Jasur Sadikov
649 6 6 серебряных знаков 20 20 бронзовых знаков
Можно привязать к объекту (префабу) преднастроенный экземпляр Text 3D или его улучшенного аналога Text Mesh PRO (последнее — более красивое и гибкое). Задать слой отображения «над» спрайтом. Из плюсов — такой текст можно периодически «кидать» в разные стороны (отображая урон или событие вроде крита или промаха) и иметь на объекте не в единственном экземпляре (выстрел из дробовика — куча цифр разлетается облачком от поражённой цели) и его положение не нужно особо сильно считать. Но надо действовать аккуратно, если планируете разместить толпу объектов, из которых может единовременно посыпаться много сообщений (например при паравоз-фарме со сплешовым уроном). Для последнего случая наверное лучше продумать какую-то хитрую систему частиц с «запеканием» значений урона в спрайты для передачи в эмиттер (или как-то так).

Простой вариант будет выглядеть примерно так:
Отслеживать
ответ дан 24 фев 2021 в 20:00
1,478 14 14 серебряных знаков 24 24 бронзовых знака
- unity3d
- разработка-игр
- 2d
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Текстовый меш
The Text Mesh generates 3D geometry that displays text strings.

You can create a new Text Mesh from Component > Mesh > Text Mesh.
Свойства
| Свойство: | Функция: |
|---|---|
| Text | Текст, который будет рендериться. |
| Offset Z | Уровень сдвига текста относительно transform.position.z. |
| Character Size | The size of each character (This scales the whole text.) |
| Line Spacing | Расстояние между строками текста. |
| Anchor | Точка, относительно которой текст будет рисоваться |
| Alignment | Выравнивание строк (лево, право, центр). |
| Tab Size | How much space will be inserted for a tab ‘\t’ character. This is a multiplum of the ‘spacebar’ character offset. |
| Font Size | The size of the font. This can override the size of a dynamic font. |
| Font Style | The rendering style of the font. The font needs to be marked as dynamic. |
| Rich Text | When selected this will enable tag processing when the text is rendered. |
| Font | TrueType шрифт используемый при рендере текста. |
| Color | The global color to use when rendering the text. |
Детали
Text Meshes can be used for rendering road signs, graffiti etc. The Text Mesh places text in the 3D scene. To make generic 2D text for GUIs, use a GUI Text component instead.
Следуйте следующим шагам, чтобы создать текстовый меш с пользовательским шрифтом:
- Import a font by dragging a TrueType Font — a .ttf file — from the Explorer (Windows) or Finder (OS X) into the Project View.
- Выберите в Project View импортированный шрифт.
- Choose GameObject > Create Other > 3D Text. You have now created a text mesh with your custom TrueType Font. You can scale the text and move it around using the Scene View’sTransform controls.
Note: If you want to change the font for a Text Mesh, need to set the component’s font property and also set the texture of the font material to the correct font texture. This texture can be located using the font asset’s foldout. If you forget to set the texture then the text in the mesh will appear blocky and misaligned.
Советы
Вы можете сказать бесплатные TrueType шрифты с сайта 1001freefonts.com (скачивайте версии шрифтов для Windows, т.к. они содержат TrueType шрифты). * If you are scripting the Text property, you can add line breaks by inserting the escape character “\n” in your strings. * Стиль текстовых мешей можно настраивать используя простую разметку. Для деталей см. Styled Text. * Fonts in Unity are rendered by first rendering the font glyphs to a texture map. If the font size is set too small, these font textures will appear blocky. Since TextMesh assets are rendered using quads, it’s possible that if the size of the TextMesh and font texture differ the TextMesh will look wrong.
Вывести текст
Вывести текст, можно через меню UI → Text.

В результате будут созданы три объекта:
- Canvas — слой, на котором размещаются элементы интерфейса;
- Text — строка;
- EventSystem.

Объект «Canvas» будет большого размера. Чтобы он был с размером игрового экрана, надо в настройках «Canvas» для параметра Render Camera указать основную камеру.

«Canvas» начнёт совпадать по размерам с основной камерой.

Теперь можно перемещать текст по полю «Canvas», изменять сам текст, размер, шрифт, цвет и другое.
Выделить текст жирным или курсивом можно через теги и .
Выделить текст жирным Выделить текст курсивом
Обновлено: 09 февраля 2021
Комментарии
Авторизуйтесь, чтобы добавлять комментарии