TGViewer
Григорий Дядиченко Григорий Дядиченко @dev_game · 2.66K subscribers
Post #596 787
Григорий Дядиченко "Бесконечный" скролл #задачка Сделать скролл который будет вмещать в себя 500 000 элементов случайного размера по высоте и не будет тормозить. Например игровой чат или система диалога, где размер текста непредсказуем. Решение: https://github.com/Nox7atra/Unity…
Обоснование задачки "Бесконечный" скролл

Скриншот так сказать для пруфов. На видео листается 720 896 элементов. Просто тормозит оно не из-за скролла, а из-за отрисовки инспектора. Если цеплять это окно. Так вот, а теперь по деталям решения задачи.

В первую очередь это задача на знание того, как сделать "свой контент сайз фиттер" и понимание, чем плохи лейауты Unity. Так как на лейаутах всё ляжет даже на 100 элементах на мобилках. И оно уже будет тормозить.

Окна адаптирующиеся под текст делаются очень просто. Для этого надо знать про существование метода. GetPreferredValues в TextMeshPro. И уметь работать с размерами RectTransform.

Из важных нюансов, что для контроля высоты нужно прописывать доп. параметры в метод. В виде желаемой ширины и желаемой высоты. Так как иначе юнити берёт настройки не из рект трансформа, а судя по всему из шрифта.

А вот часть с бесконечным скроллом уже сложнее. Так как нужно понимать, как работать с пулом, со скролл вью и с тем, как делаются в целом нетормозящие скроллы.

Просто плохо сделанные скроллы — это моя боль. Первый проект, который я делал на фрилансе ещё пять лет назад передали мне со скроллом на лейаутах и контент сайз фиттерах юнити. И на 40 элементах оно не выдавало 60 фпс на топовом устройстве. А на скроллах очень заметны тормоза. Поэтому у меня в целом аллергия на Unity лейауты.

Тут просто показано решение одним скриптом, как с помощью методов расчитать размер контента и вместо 720к+ элементов мы будем переставлять 8 элементов. И в этом весь трюк. Плюс ряд оптимизаций. Остальное можно понять разобрав код.
  • 👍 10
More from @dev_game
  1. Oct 16, 2026Когда с ходу за неделю собралось больше 700 пользователей
  2. Oct 16, 2026Григорий Дядиченко pinned a photo
  3. Oct 16, 2026Разыгрываем AirPods Pro 3 С 16 октября по 15 ноября в MES идёт розыгрыш. Главный приз — Ai…
  4. Oct 16, 2026В общем да, на релизе оказывается сразу возникает слишком много дел
  5. Oct 14, 2026Куда пропал? Всем привет. Куда я пропал? Да замотался, выиграл два покерных турнира и доде…
  6. Oct 8, 2026Метрики, метрики и ещё раз метрики https://app.mes-poker.ru Эхх, со своим продуктом руки с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →