@Ksushqa
Unity developer

Как сгенерить TMP_FontAsset, если есть текстура шрифта и описание того, из каких координат брать «картинку» для glyph?

Всем привет!
Не могу до конца понять воркфлоу для следующей задачи.
Для генерации шрифта у меня есть такая информация:
1) текстура, которая содержит все необходимые символы;
2) описание каждого символа, из которого я могу заполнить данные для каждого glyph в GlyphTable и CharacterTable (которые соотносятся с представленной текстурой). Сюда входят расположение символа на текстуре, высота/ширина и т.д.

Мне нужно по этим данным сгенерировать TMP_FontAsset.
Для начала я беру некий существующий TMP_FontAsset, делаю ClearFontAssetData(), а далее в CharacterTable добавляю нужные Character по моим данным.
Далее, я не понимаю, что мне нужно сделать, чтобы настроить отображение части текстуры в "окошечке", в котором показывается превью символа. У меня там просто пустота.
Я применяю свою текстуру к полям atlasTextures (element 0), atlas в режиме просмотра инспектора Debug, но не могу подставить свою текстуру в самое важное поле -- AtlasTexture.

В общем, в голове каша, и что именно нужно исправить в моем случае, пока не понимаю.

Т.е. мне бы хотя бы понять, как в инспекторе сделать то, что я хочу: например, добавить текстуру, из которой будут браться символы для шрифта; настроить ручками положение первого символа. Не получается.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@Ksushqa Автор вопроса
Unity developer
Основными важными моментами оказалось вот что:
- применить свою текстуру в качестве атласа шрифта и применить свой материал;
- передать в _MainTexture материала шрифта нужную текстуру с символами;
- заполнить данные glyph table;
- заполнить данные character table.
Обратить внимание на то, что поля AtlasWidth и AtlasHeight должны соответствовать размеру текстуры.

После генерации может быть такое, что шрифт сразу не обновится, поэтому его нужно сначала проверить.
В моем случае в инспекторе preview для символов были "пустыми", несмотря на то, что в тексте они выглядели корректно. Поэтому лучше проверять символы шрифта на каком-то тексте в сцене.
Не забывать перед каждой генерацией очищать glyph table и character table шрифта.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы