Во всех наших играх есть список друзей и чаты между ними. Уже много лет для его реализации я использую UIS, свой же скрипт для бесконечных списков. И когда надо посчитать высоту элемента чата (облачко, speech balloon), это делалось с помощью старой функции подсчета слов, переносов строк и т.п. И в общем-то, работает это до сих пор нормально.
Но сейчас при создании новой игры, я нашёл более правильное решение этой задачи. Оказывается 😅 у TMP есть специальный метод который позволяет получить размеры компонента до! установки туда текста:
var size = _message.GetPreferredValues(text);
И размеры будут с учётом якорей, отступов и прочего. А если нужно получить, например, размеры с фиксированной шириной и изменяемой высотой, то можно задать это дополнительными параметрами:
var size = _message.GetPreferredValues(text, MAX_ITEM_WIDTH, Mathf.Infinity);
Так что в новой игре чатики будут красивее 😁
Все исходники UIS доступны на Github
Нет комментариев