Страница 1 из 1

Определение высоты текста

СообщениеДобавлено: 13 янв 2017, 22:27
LogicManager
Всем привет. Есть панелька, которая в столбик генерит текстовые элементы. Проблема в том, что этим элементы могут быть разной высоты.
В принципе есть компонент ContentSizeFitter, который подгоняет rect под размер текста, но в коде он почему то не срабатывает. А именно, при изменении поля text размер rect.height (или sizeDelta.y) не изменяются. Пробовал использовать Canvas.ForceUpdateCanvases(), но тогда элементы становятся больше, не понял почему.
В общем непонятно как можно вернуть высоту в тексте. Ещё хочу попробовать TextGeneration, может кто работал с этой штукой ?

Re: Определение высоты текста

СообщениеДобавлено: 13 янв 2017, 23:04
bojlahg
так добавляй тексты в VerticalLayout и не надо будет знать какая высота вообще. Там только тонкости есть надо в документации прочитать про minimum height и ContentFitter.

Re: Определение высоты текста

СообщениеДобавлено: 13 янв 2017, 23:28
LogicManager
я не хотел вовлекать вертикал лейаут потому что он люит всю область занимать =) хм... но если не разрешать ему это делать, то это может сработать =) Но тут ест ьещё один нюанс, мне всё равно надо знать высоту элементов, чтобы понять когда "страница" заполнена, чтобы сгенерировать новую "страницу" =/

Re: Определение высоты текста

СообщениеДобавлено: 13 янв 2017, 23:39
bojlahg
Сделай скроллинг

Re: Определение высоты текста

СообщениеДобавлено: 13 янв 2017, 23:54
LogicManager
в книге ? скроллинг ? =)

Re: Определение высоты текста

СообщениеДобавлено: 14 янв 2017, 00:05
LogicManager
сейчас у меня главная проблема именно в том, что я не могу правильно определить высоту текста (rect.height и sizeDelta.y не успевают обновиться после создания). А Canvas.ForceUpdateCanvases() сама добавляет высоту почему то =(
Ещё есть мысль заюзать OnRectTransformDimensionsChange =)

Re: Определение высоты текста

СообщениеДобавлено: 14 янв 2017, 11:12
bojlahg
посмотри функцию LayoutUtility.GetPreferredHeight(transform) и класс TextGenerator. может они помогут

Re: Определение высоты текста

СообщениеДобавлено: 14 янв 2017, 13:55
LogicManager
LayoutUtility.GetPreferredHeight помог, по крайнее мере с текстом =)
Для обычных RectTranslate высоту можно определить с помощью rect.height или sizeDelta.y =)
Спасибо =)

Re: Определение высоты текста

СообщениеДобавлено: 03 фев 2017, 06:12
LogicManager
И всё равно высота считается не правильно.
И даже LayoutUtility.GetPreferredHeight не помогает

А именно:

Создаю Text и добавляют туда строчку (в результате в игре этот Text по высоте ~50 px)
Но LayoutUtility.GetPreferredHeight тут же мне выдаёт 392 px (чуть меньше чем контейнер, где находится Text).
Такое чувство, что Text не успевает сделать Update своей высоте

Может быть у кого будут мысли на этот счёт ?