Unity warnings про шрифты

Если вы когда либо видели такие вот предупреждения:

Скришнот предупреждения. Font size and style override are only supported for dynamic fonts.

Скорее всего в своем проекте вы используете editable шрифты. Т.е. не динамически генерируемые напрямую из ttf, а прямо вот битмапку, которую сделали сами. И иногда Unity может сглючивать вот в такое:

Скришнот инспектора UI Text с применением стиля italic к статическому шрифту

Хотя конкретно этот случай в общем-то не глюк, а стандартное поведение при создании input field'a. По умолчанию Unity назначает стиль italic для placeholder текста и какой-то дефолтный шрифт (обычно Arial). И вот если вы, этот шрифт поменяете на свой не динамический, Unity начнет ругаться предупреждениями с первого скриншота. Ведь он не знает, как из вашей странной картинки со шрифтом сделать italic. В общем, причин подобного сообщения может быть много, но все они сводятся к тому, что вы пытаетесь применить какие-то стили/фильтры/размеры, которые по своей природе динамические сущности, к статическому шрифту.

Исправить последний случай можно просто поменяв шрифт для placeholder'a на любой динамический, потом поменять стиль на normal, потом вернуть свой изначальный шрифт. Если не менять шрифт на другой динамический - Unity не даст изменить настройку style.

Но если таких объектов у вас стопиццот можно сделать еще проще. При условии, что у вас Linux/Mac/Cygwin или другой какой "linux под windows" и в проекте сериализация meta файлов настроена как force text.

Заходим в папку с нашими префабами, в которых нужно поправить проблему со шрифтом. Там запускаем команду:

find ./ -type f -name "*.prefab" -exec sed -i -e 's/m_FontStyle: 2/m_FontStyle: 0/g' {} \;

Что тут происходит по частям

Найти в текущей папке, рекурсивно включая подпапки, все файлы чье имя заканчивается на .prefab
find ./ -type f -name "*.prefab"

Для каждого из найденных файлов запустить
-exec ... {} \;

Текстовый редактор sed
sed

с параметрами: -i значит сохранить изменения после применения команды
-i

параметр -e за которым следует команда редактирования
-e

найти в каждой строке m_FontStyle: 2 и заменить на m_FontStyle: 0 (2 это italic, 0 - normal)
's/m_FontStyle: 2/m_FontStyle: 0/g'

Прочитать подробнее про sed можно на сайте Daniel Robbins