Шрифты в UI Toolkit (UI Elements)
Я хочу изменить шрифт в моей Unity-игре, использующей UI Toolkit. Версия Untiy: 2022.3.31f1.
Я попробовал установить шрифт через код:
public Font myFont;
private void Start()
{
element.style.unityFont = myFont;
}
Но шрифт при этом не меняется.
Я также попытался поставить новый шрифт через PanelTextSettings в PanelSettings, но это не дало результата.
И пробовал добавить его через ThemeStyleSheet как свой uss, в котором я определил шрифт для интересующих меня элементов. И это тоже не сработало.
Как я выяснил позже - во всём виновато наследование моего ThemeStyleSheet от default.tss, которое вставало поверх любых моих попыток указать новый шрифт для элементов.
Но удалять наследование default.tss - тоже не вариант, поскольку это удалит вообще все предустановки интерфейса.
Собственно, отсюда следует вопрос - как вообще с этим правильно работать? Неужели для простой замены шрифта нужно полностью прописать стиль каждому элементу вручную? Я пытался найти кем-нибудь перепечатанный default.tss, но ничего не нашёл. Так что, по всей видимости, есть какой-то вменяемый способ переопределить шрифт?
Ответы (1 шт):
Что-ж. Я разобрался с проблемой.
Итак, чтобы переопределить шрифт - нужно в uss-файле определять свойство -unity-font-definition. И хотя JetBrains Rider и помечает это свойство как ошибочное, оно как раз и переопределяет шрифт, тогда как свойство -unity-font добавлено просто для введения в заблуждение. Это свойство ничего не делает и не будет вызывать никаких ошибок или предупреждений.
Label {
-unity-font: url('mysans.ttf'); /* Ничего не делает */
-unity-font-definition: url('mysans.ttf'); /* Установка шрифта */
color: white;
}
По всей видимости, при отключении default.tss - я видел работу PanelTextSettings, что странно, конечно, но поскольку я нашёл решение своей проблемы - меня уже не особо интересует, для чего вообще нужен PanelTextSettings.