Как сделать шрифт для unity

Добавил пользователь Владимир З.
Обновлено: 18.09.2024

private int textureSize = 128;//текстура больше - шрифт больше
private int fontCoeff = 9;//коэффициент шрифта. коэффициент больше - шрифт меньше

GUIStyle styleMy = new GUIStyle();
styleMy.fontSize = textureSize/fontCoeff;
styleMy.normal.textColor = Color.black;
GUI.Label(new Rect(Screen.width/2,Screen.height/2,20,20), "Bu-ga-gaaa", styleMy);

Код
private int textureSize = 128;//текстура больше - шрифт больше
private int fontCoeff = 9;//коэффициент шрифта. коэффициент больше - шрифт меньше

GUIStyle styleMy = new GUIStyle();
styleMy.fontSize = textureSize/fontCoeff;
styleMy.normal.textColor = Color.black;
GUI.Label(new Rect(Screen.width/2,Screen.height/2,20,20), "Bu-ga-gaaa", styleMy);

либо используй растровый шрифт. Если в поисковике набьешь "Custom font в Unity3d", то на хаха найдешь статью хорошую.


Спасибо, помогло!
Вот только еще один вопрос образовался
Почему "0/20" серого цвета, хотя в style который показан на картинке все белое, и в коде я тоже прописал белый цвет?

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

Как получить яркий и привлекательный текст


Размытый текст по умолчанию в Unity

Работа с трехмерным текстом Unity (сетка текста) и текстом пользовательского интерфейса

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

Работа со шрифтами в Unity


Объемный текст Unity по умолчанию (сетка текста) занимает одну единицу Unity, которая является 1 счетчиком.

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

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


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

Трехмерная сетка Unity с оптимизированными значениями


Трехмерная сетка Unity с оптимизированными значениями

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

Текст пользовательского интерфейса Unity с оптимизированными значениями


Текст пользовательского интерфейса Unity с оптимизированными значениями

Значение по умолчанию любого шрифта может зависеть от размера текстуры этого шрифта или от того, как шрифт был импортирован в Unity. Эти тесты были выполнены на основе шрифта Arial по умолчанию в Unity, а также одного другого импортированного шрифта.

Работа с сеткой текста Pro

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

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


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

Рекомендуемый размер текста

Как можно догадаться, размеры типов, используемые на ПК или планшетном устройстве (обычно от 12 – отступ), выглядят небольшими на расстоянии 2 метра. Это зависит от характеристик каждого шрифта, но в общем случае рекомендуемый минимальный угол просмотра и высота шрифта для читаемости находятся вокруг 0,35 °-0,4 °/12.21-13.97 мм на основе наших исследований исследования пользователей. Это примерно 35-40 пт с коэффициентом масштабирования, представленным выше.

Для близкого взаимодействия в 0,45 м (45 cm) минимальный угол просмотра и высоту шрифта — 0,4 °-0,5 °/3,14 – 3,9 мм. Это примерно 9-12 пт с коэффициентом масштабирования, представленным выше.

Содержимое диапазона практически и дальнего взаимодействия

в пределах диапазона практически и дальнего взаимодействия

Минимальный размер неудобочитаемого шрифта

расстояние; Угол просмотра Высота текста Размер шрифта
45 cm (расстояние прямого манипулирования) 0,4 ° — 0,5 ° 3,14 — 3,9 мм 8.9 — 11.13 PT
2 м 0,35 °-0,4 ° 12.21 – 13.97 мм 34.63-39.58 PT

Удобно, чтобы размер шрифта разборчиво

расстояние; Угол просмотра Высота текста Размер шрифта
45 cm (расстояние прямого манипулирования) 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 pt

Segoe UI (шрифт по умолчанию для Windows) хорошо работает в большинстве случаев. Однако старайтесь не использовать светло-или светлое семейство шрифтов в небольшом размере, так как тонкие вертикальные штрихи будут вибрировало, и это приведет к ухудшению читаемости. Современные шрифты с достаточной толщиной обводки хорошо работают. например, шрифты Helvetica и Arial выглядят прекрасные и становятся неудобочитаемыми в HoloLens с обычными или полужирными плотностьми.

Просмотр угла

просмотра расстояния, угла и высоты текста

текст с смешанной реальности набор средств v2

Качество отрисовки текста с правильным измерением

На основе этих коэффициентов масштабирования мы создали текст Prefabs с текстом пользовательского интерфейса и сеткой трехмерного текста. Разработчики могут использовать эти Prefabs, чтобы получить четкий текст и согласовать размер шрифта.

Качество отрисовки текста с правильным измерением


Качество отрисовки текста с правильным измерением

Шейдер с поддержкой перекрытия

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

Шейдер с поддержкой перекрытия


Шейдер с поддержкой перекрытия

Следующий этап разработки

Если вы пойдете из пути разработки Unity, мы собрались, что вы в состоянии изучить стандартные блоки МРТК Core. Отсюда вы можете перейти к следующему стандартному блоку:

Встроенный текстовый пользовательский интерфейс Unity — отличная отправная точка для учащихся при разработке пользовательского интерфейса, даже если он находится в тени более мощных и эффективных ресурсов сообщества.

Для нашей цели ванильный элемент Text более чем достаточен для начала.

Текст, являющийся отдельным элементом пользовательского интерфейса, обусловлен прежде всего динамизмом этого элемента. Например, для печати текущего счета игрока на экране требуется преобразовать числовое значение счета в строку, обычно с помощью метода .toString () , перед его отображением.

Создать текст интерфейса

Новый текстовый элемент должен появиться в вашем регионе Canvas. Если мы посмотрим на его свойства, мы увидим несколько очень полезных опций.

Текстовый элемент

Первое изменение, которое мы сделали, — добавление новой ссылки на пространство имен. Эта ссылка используется для работы с компонентами пользовательского интерфейса Unity, поэтому мы добавляем строку using UnityEngine.UI .

Затем мы создаем общедоступную переменную Text, куда мы можем перетащить наш элемент Text UI.

Наконец, мы получаем доступ к фактическому тексту, который содержит этот элемент пользовательского интерфейса, используя myText.text .

myText.text

Если мы сохраним наш скрипт, мы теперь увидим новый слот для элемента Text UI в нашем ButtonManager. Просто перетащите элемент gameObject, содержащий этот элемент Text, в слот и нажмите кнопку Play.

У меня есть на сцене два текста (TMPro) у них один шрифт, но мне нужно как-то изменить Тени, Осветления и т.д. у другого текста, почему-то юнити решила, что это тексты будут иметь одинаковый материал, и при изменения то ли материала то ли его параметров, изменения будут наблюдаться у двух текстов. Как этого можно избежать?


2 ответа 2

Ответ нашелся случайно. Я просто скопировал стандартный материал этого шрифта, и просто переименовал, в итоге в списке появилось два материала, второй же я мог изменять не изменяя первый.


Вы можете нажать на уже настроенном материале правой кнопкой и выбрать там Create Material Preset. Это создаст новый материал со свойствами, которые вы настроили. Дальше вы можете ввести имя, но я заметил, что выбрать для текстфилдов можно только тот материал, который начинается на имя шрифта SDF.



Всё ещё ищете ответ? Посмотрите другие вопросы с метками unity3d unity3d-editor или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2022.1.24.41249

Читайте также: