Использование TextMesh Pro в Unity 2018

Независимо от того, работаете ли вы над FPS, головоломкой или VR, одним из аспектов, о котором вам придется позаботиться, является пользовательский интерфейс. К счастью, в марте 2017 года TextMesh Pro присоединился к семейству Unity. Это означает, что создание великолепного пользовательского интерфейса в Unity стало намного проще и быстрее!
Для тех, кто не следил за развитием событий, TextMesh Pro - это замена текстовых компонентов Unity по умолчанию. Он обладает такой же производительностью (в некоторых случаях даже большей) и использует совершенно другую технику рендеринга под названием Signed Distance Field (SDF), которую Valve первоначально использовала в Team Fortress 2. TextMesh Pro не только позволяет придать тексту великолепный вид без особых усилий, но и дает возможность более глубокого контроля над ним с помощью инспектора или скриптов. В этом посте мы рассмотрим, как извлечь максимум пользы из этого невероятного инструмента!
Есть две основные причины, по которым стоит начинать свои проекты с TextMesh Pro. Во-первых, визуальные улучшения. Благодаря SDF-рендерингу можно легко изменить внешний вид текста, не переделывая его шрифт. К каждому компоненту TextMesh Pro прикреплен материал, который вы можете настраивать, чтобы изменить стиль текста. Во-вторых, лучший контроль. Компонент TextMesh Pro включает в себя все переменные, которые можно найти в обычном текстовом компоненте, и многое другое. А если этого недостаточно, то знайте, что TextMesh Pro в настоящее время используют более четверти миллиона разработчиков по всему миру!
Работая с текстом Unity по умолчанию, вы могли заметить, что иногда растяжение или изменение размера объекта приводит к тому, что он выглядит размытым. Это происходит потому, что текст не содержит информации о том, как он будет выглядеть при изменении размера, поэтому Unity приходится "импровизировать" и пытаться генерировать недостающие пиксели на лету. Благодаря другой технике рендеринга, которую использует TextMesh Pro, эта проблема больше не актуальна. SDF основан на принципе рендеринга атласа шрифтов в высоком разрешении, чтобы шрифт всегда имел информацию о том, как будет выглядеть символ при изменении размера.

В TextMesh Pro вы можете импортировать любой файл шрифта и создать свой собственный шрифтовой актив(Window > TextMesh Pro > Font Asset Creator). Это позволяет выбрать разрешение для атласа шрифтов (от этого зависит, насколько эффективным будет рендеринг SDF для вашего текста). Очевидно, что чем меньше разрешение, тем быстрее будет генерироваться шрифтовой атлас.

Поскольку шрифт имеет информацию о том, как он будет выглядеть при разных размерах, он также может воссоздать свой контур и падающую тень из атласа шрифтов. Просто измените свойства материала и увидите, как ваш текст полностью изменит свой вид!
Как мы уже убедились, TextMesh Pro предлагает великолепно выглядящий текст. Но какой смысл в красивом тексте, если вы не можете его контролировать? Компонент TextMesh Pro имеет опции, позволяющие настроить размер шрифта, интервал, выравнивание, кернинг или включить авторазмер и поместить текст в контейнер. Последние два варианта, в частности, дают вам большой контроль над работой с разными платформами или разными языками, поскольку позволяют авторазмеру текста в зависимости от заданного текстового контейнера без использования каких-либо скриптов. Однако если вы хотите изменить эти настройки во время выполнения программы, вы можете получить доступ ко всем переменным в компонентах TextMesh Pro из API TextMeshPro.
Для дополнительной настройки вы также можете добавить компонент Text Info Debug Tool к текстовому объекту, чтобы визуально представлять символы, слова, ссылки, строки и т. д.

Если вы хотите сэкономить время на переформатировании текста каждый раз, когда вставляете заголовок, заголовок, цитату и т. д., вы можете создать таблицу стилей для любой конкретной цели. Одним из примеров может быть вставка украшения в заголовок. Чтобы создать таблицу стилей, выберите Создать > TextMesh Pro > Таблица стилей. Вы можете установить этот новый актив в качестве таблицы стилей по умолчанию в меню Edit > Project Settings > TextMesh Pro Settings.

Помимо управления внешним видом текста из инспектора или скрипта, вы можете управлять им из самого текстового поля. Если вы знакомы с HTML или XML, вы можете настраивать внешний вид текста по мере набора. Если нет, просто прочитайте руководство по использованию Rich Text с TextMesh Pro), чтобы начать! Это особенно полезно в тех случаях, когда вы хотите использовать несколько стилей, размеров и материалов в одном текстовом объекте.

Еще один способ придать тексту TextMesh Pro великолепный вид - применить к нему шейдер Surface Shader. Это позволит освещению в сцене влиять на текст. В примере ниже несколько точечных светильников в реальном времени перемещаются по сцене и влияют на текст.

В свойствах материала вы можете настроить такие параметры, как Face, Outline, Bevel, Lighting, BumpMap, EnvMap, Glow и Debug.
После создания материала, который вас устраивает, вы можете создать предустановку материала, которую мы сможем использовать в любой момент, специально для используемого ассета шрифта. Для этого щелкните правой кнопкой мыши на названии материала и выберите "Создать предустановку материала". Это создаст актив, который мы можем выбрать в компоненте TextMesh Pro > Font Settings > Material Preset.
Если вы создали атлас шрифтов, в котором отсутствуют определенные символы, TextMesh Pro заставит их вернуться к глифу по умолчанию при вводе. Вы можете изменить этот глиф, перейдя в меню Edit > Project Settings > TextMesh Pro Settings. Кроме того, вы можете задать один или несколько шрифтовых активов, к которым TextMesh Pro будет возвращаться, если символ не будет найден в основном атласе. В целях оптимизации имеет смысл держать основной атлас шрифтов в более высоком разрешении, а все резервные атласы - в более низком.
Кроме того, вы можете использовать настройки TextMesh Pro Settings для настройки путей ресурсов для шрифтов и материалов или ассетов спрайтов. При использовании Rich Text вы можете вставить спрайт в зависимости от того, какие из них доступны в основном ассете спрайтов, который вы определили в Настройках. Самый простой способ сделать это - импортировать лист спрайта, затем нарезать его в редакторе спрайтов, щелкнуть правой кнопкой мыши на активе и выбрать Create > TextMesh Pro > Sprite Asset. В этом новом активе можно настроить такие параметры, как смещение или поворот. Аналогичным образом можно настроить серию резервных активов спрайтов, к которым можно вернуться, если спрайт не найден в основных активах спрайтов.

С точки зрения производительности, как мы уже говорили, TextMesh Pro работает так же, как и текст по умолчанию: он по-прежнему рендерится на квадраты, поэтому по эффективности не уступает использованию растрового шрифта. Также отсутствует выделение памяти во время выполнения: TextMesh Pro выделит место для текстовых объектов только после того, как вы нажмете кнопку воспроизведения. Если вы увеличиваете количество символов на значительную величину, выполняется только одно перераспределение; если вы уменьшаете количество символов, перераспределение не выполняется, если только оно не уменьшается по крайней мере на 256 символов. Что касается улучшений, то вы можете получить лучшие результаты для таких стилей, как Outline и Drop Shadow, просто благодаря технике рендеринга SDF, используемой в TextMesh Pro.
Большая часть того, о чем говорилось в этом блоге, доступна в качестве примера сцены при импорте TextMesh Pro в ваш проект (из Window > Package Manager > TextMesh Pro > Install начиная с Unity 2018.1). Я настоятельно рекомендую ознакомиться с ними до начала работы с TextMesh Pro, поскольку их содержание может дать ответы на большинство возникших у вас вопросов. Однако если вы хотите оставить свой отзыв или у вас остались вопросы, вы можете сделать это на Форуме.
