Как добавить новый шрифт в Unity

Пример для шрифта Russo One.

Шаг 1: Подготовка файлов

  1. Скачанный архив с Google Fonts содержит:
    • RussoOne-Regular.ttf (основной файл)
    • Возможно другие начертания (обычно только Regular)
  2. Создайте структуру папок:
Assets/
├── Fonts/
│   ├── RussoOne/
│   │   ├── RussoOne-Regular.ttf
│   │   └── Materials/
├── TextMesh Pro/
│   └── Resources/

🛠 Шаг 2: Создание TextMeshPro Font Asset

A. Настройки для WebGL:

  1. Откройте Font Asset Creator:
    • Window → TextMeshPro → Font Asset Creator
  2. Настройте параметры для WebGL:
ПараметрЗначениеОбъяснение
Source Font FileRussoOne-Regular.ttfВыберите ваш файл
Sampling Point Size24-32Чем меньше, тем легче атлас
Padding5Для WebGL достаточно
Packing MethodOptimumОптимальное заполнение
Atlas Resolution512×512Для WebGL лучше 512 или 1024
Render ModeSmoothДля не-пиксельных шрифтов
Character SetCustom SetОптимизация размера
  1. Настройте Custom Character Set для игры:
    • Вставьте в поле «Custom Character List»:
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
абвгдеёжзийклмнопрстуфхцчшщъыьэюя
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
.,!?-+()[]{}:;'"@#$%&*<>/=_

Для экономии места можно ограничить только английскими буквами, если игра не на русском.

  1. Нажмите «Generate Font Atlas»
  2. Сохраните как: Assets/Fonts/RussoOne/RussoOne SDF.asset

B. Создание Material для шрифта:

  1. Создайте Material:
    • Right-click в папке RussoOne → Create → Material
    • Назовите RussoOne SDF Material
  2. Настройте Shader:
    • Shader: TextMeshPro/Distance Field
  3. Настройте параметры:
Face:
  - Color: #FFFFFFFF
  - Dilate: 0.5
  - Softness: 0.1

Outline:
  - Color: #000000AA
  - Thickness: 0.15
  - Softness: 0.1

Underlay:
  - Отключить (увеличивает draw calls)

Glow:
  - Отключить (для производительности)
  1. Привяжите Material к Font Asset:
    • Откройте RussoOne SDF.asset
    • В Material Preset перетащите созданный материал

Шаг 3: Оптимизация для WebGL

A. Оптимизация Font Asset:

  1. Откройте RussoOne SDF.asset в инспекторе
  2. Настройте атлас:
General Settings:
  - Atlas Population Mode: Static
  - Atlas Render Mode: RasterHinted
  - Atlas Width/Height: 512 (или 1024 если много символов)

Font Settings:
  - Font Scaling Mode: Match SDF Size
  - SDF Scale: 8-16 (меньше = легче, но хуже качество)
  - Normal Style: 0.5
  - Bold Style: 1.0
  1. Уберите ненужные символы:
    • В разделе «Glyph Table» удалите ненужные символы
    • Оставьте только используемые в игре

B. Создание Fallback Font Asset (важно для WebGL):

  1. Создайте упрощенную версию:
    • Duplicate RussoOne SDF.asset → назовите RussoOne SDF Fallback
    • Уменьшите SDF Scale до 4-8
    • Уменьшите атлас до 256×256
  2. Настройте Fallback List в TMP Settings:
    • Window → TextMeshPro → Settings
    • В разделе «Fallback Font Assets» добавьте:
      1. Основной шрифт (RussoOne SDF)
      2. Fallback шрифт (упрощенный)
      3. LiberationSans SDF (стандартный, уже есть)

Шаг 4: Применение в игре

A. Настройка UI элементов:

  1. Для всех TextMeshPro компонентов:
    • Font Asset: RussoOne SDF
    • Material Preset: RussoOne SDF Material
    • Font Style: Normal (или Bold если нужно)
  2. Оптимальные настройки для разных элементов:

Заголовки (Game Paused):

Font Size: 48-64
Font Style: Normal
Character Spacing: 0
Line Spacing: 100%
Alignment: Center

Характеристики в меню паузы:

Font Size: 32
Font Style: Normal
Character Spacing: 2
Line Spacing: 120%

Кнопки:

Font Size: 28-32
Font Style: Normal
Outline: 0.15 толщина, черный цвет

B. Создание пресетов стилей:

  1. Создайте TMP Style Sheet:
    • Right-click → Create → TextMeshPro → Style Sheet
    • Назовите RussoOneStyles
  2. Добавьте стили:
Styles:
  - Title (Font Size: 64, Bold, Center)
  - Subtitle (Font Size: 36, Center)
  - Body (Font Size: 28, Left)
  - Button (Font Size: 32, Bold, Center, Outline)
  - Stats (Font Size: 32, Bold, Left)

Шаг 5: Оптимизация сборки WebGL

A. Настройки Player Settings для шрифтов:

  1. Откройте: Edit → Project Settings → Player → WebGL Settings
  2. Настройте:
Publishing Settings:
  - Compression Format: Brotli (лучшее сжатие для шрифтов)
  - Data Caching: ✓ Enabled

Strip Engine Code:
  - Strip Byte Code: ✓ Enabled
  - Managed Stripping Level: High

B. Уменьшение размера билда:

  1. Удалите неиспользуемые начертания:
    • Если у вас только Regular, удалите другие файлы шрифтов
  2. Оптимизируйте атласы:
    • Убедитесь все символы помещаются в 512×512
    • Если нет — увеличьте до 1024×1024, но не больше
  3. Используйте Asset Bundles для шрифтов (опционально): Можно вынести шрифт в отдельный бандл и загружать асинхронно при старте игры

C. Проверка производительности:

  1. Включите Frame Debugger:
    • Window → Analysis → Frame Debugger
    • Проверьте что шрифт не вызывает лишних draw calls
  2. Оптимизация батчинга:
    • Используйте одинаковые материалы для текста
    • Избегайте частого изменения цвета/прозрачности

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

16 + 8 =

Прокрутить вверх