Обоснование задачки "Бесконечный" скролл
Скриншот так сказать для пруфов. На видео листается 720 896 элементов. Просто тормозит оно не из-за скролла, а из-за отрисовки инспектора. Если цеплять это окно. Так вот, а теперь по деталям решения задачи.
В первую очередь это задача на знание того, как сделать "свой контент сайз фиттер" и понимание, чем плохи лейауты Unity. Так как на лейаутах всё ляжет даже на 100 элементах на мобилках. И оно уже будет тормозить.
Окна адаптирующиеся под текст делаются очень просто. Для этого надо знать про существование метода. GetPreferredValues в TextMeshPro. И уметь работать с размерами RectTransform.
Из важных нюансов, что для контроля высоты нужно прописывать доп. параметры в метод. В виде желаемой ширины и желаемой высоты. Так как иначе юнити берёт настройки не из рект трансформа, а судя по всему из шрифта.
А вот часть с бесконечным скроллом уже сложнее. Так как нужно понимать, как работать с пулом, со скролл вью и с тем, как делаются в целом нетормозящие скроллы.
Просто плохо сделанные скроллы — это моя боль. Первый проект, который я делал на фрилансе ещё пять лет назад передали мне со скроллом на лейаутах и контент сайз фиттерах юнити. И на 40 элементах оно не выдавало 60 фпс на топовом устройстве. А на скроллах очень заметны тормоза. Поэтому у меня в целом аллергия на Unity лейауты.
Тут просто показано решение одним скриптом, как с помощью методов расчитать размер контента и вместо 720к+ элементов мы будем переставлять 8 элементов. И в этом весь трюк. Плюс ряд оптимизаций. Остальное можно понять разобрав код.
Post #596
787
Григорий Дядиченко "Бесконечный" скролл #задачка Сделать скролл который будет вмещать в себя 500 000 элементов случайного размера по высоте и не будет тормозить. Например игровой чат или система диалога, где размер текста непредсказуем. Решение: https://github.com/Nox7atra/Unity…

- 👍 10