Комментарии 11
А что будет если, я в китае, смартфон китайский, но я хочу играть на русском?
Хороший вопрос! Все зависит какой язык стоит у игрока в ОС, если китайский, тогда игра будет на нем и придется делать возможность переключения языка.
Но тут уже зависит как вы реализуете локализацию. Fallback шрифты уже сработают по порядку, кто первый отдаст символ тот и отобразится. Надеюсь ответил на вопрос.
В бандлы нужно паковать шрифт и качать тот что нужен.
Хороший проект!
А что насчет эмоджи? Есть возможность использовать родные эмоджи от платформы?
Отличный вопрос!
Эмоджи не пробовал грузить (такой задачи пока что не было), но знаю что в iOS есть такой шрифт с расширением ttc и весит он не мало, называется AppleColorEmoji-160px (гляньте в списки шрифтов).
Думаю через шрифты такое не получится сделать, но через TMP_SpriteAsset имеет смысл попробовать! Хорошая идея продолжить статью:)
Да, тема актуальная для тех кто делает различные игры и аппы где есть пользовательский ввод. Сейчас эмоджи так и сделаны, есть несколько атласов с подготовленными спрайтами и оттуда они подставляются в текст. Но если можно использовать родные, то вес приложения уменьшится конечно.
А вес приложения в памяти - нет. Сами-то себя мы можем ограничить в количестве доступных эмоджи, а вот если грузить все подряд (если я правильно понял что и произойдет при описанном подходе) - может мало не показаться
Все эмоджи разбиваются на категории и атласы. Есть еще атлас с самыми популярными эмоджи, всё это подгружается и выгружается по мере необходимости и использования. Конечно ситуация когда можно задействовать их все – не исключена 😅, но тут тоже можно что-нибудь придумать.
да, когда атласы собраны вручную все понятно, можно как-то предсказать популярность. Но я про описанный в статье подход автоматической генерации (как я его понял), который, если я правильно понял, загрузит вообще всё
В своей статье я скорее акцентировал внимание на подходе подгрузки шрифтов из ОС и динамической подгрузке символов, а уже работа с памятью это скорее ответственность разработчика.
Если обсуждать проблему памяти, всегда можно пожертвовать качеством. Для примера emoji чаще всего не нужны большого размера и 64х64 должно хватить. Получаются такие расчеты:
Вводные:
-атлас 2048х2048
-emoji 64х64
-в iOS 1427 emoji
1427/(2048/64)^2 = ~1.4 (кол-во атласов)
Выходит нам хватит примерно ~1.4 атласа, а это совсем не много места в памяти, около 18мб (без компрессии и без альфа канала). Сжать можно до 3 мб примерно, что выглядит не много.
Как уменьшить размер шрифтов в Unity до нуля