Когда вы начинаете делать UI и/или работать с текстом, вы почти сразу сталкиваетесь с проблемой: а как непосредственно задавать формат этого текста, куда подставлять данные, как прокидывать форматирование и что делать с датами. Решение простое.

Берете язык из String.Format и жените его с Unity Inspector.

Класс обертка над текстом. ValueContainer - это базовый класс с методом задания значения
Класс обертка над текстом. ValueContainer - это базовый класс с методом задания значения
Структура для удобного создания форматируемого текста
Структура для удобного создания форматируемого текста
Как это выглядит в инспекторе
Как это выглядит в инспекторе

Как использовать:

var fpsText = new PreFormatText("-", fps, netFps, lag); _fps.UpdateValueWithoutNotify(fpsText);

Строите строку, где указываете fallback значение и далее передаете сколько угодно параметров.

Пример строки на выходе и комментарий:

FPS: 30 // переменная fps с форматированием 0
NetFPS: 28 // переменная netFps с форматированием 0
Lag: 0.12​ // переменна lag с форматированием 0.00

Плюсы подхода:

  • гибкость определения формата текста

  • не нужно ничего перекомпилировать

  • можно загонять форматы во внешние ресурсы

Минусы подхода:

  • из кода нет валидации параметров

P.S. Я бы порекомендовал выносить всю параметризацию вьюх в инспектор или конфиги. Не держите ничего из этого в коде. Наступит момент, когда придут правки или нужно будет вылизывать анимации до идеала с дизайнером. И он захочет тягать крутилки, кривые и играться с цветом. В этот момент вы поймете, насколько важно иметь прослойку

Комментарии (2)


  1. monobogdan
    13.01.2026 16:41

    Вот какие классные штуки можно делать, когда в движке есть адекватный сериализатор! Пригласил и опубликовал.

    Предложу перенести сниппеты в отдельные блоки кода


    1. Reptiling Автор
      13.01.2026 16:41

      Хорошо. Учту на следующий раз