Запутался в Content Size Fitter и Vertical Layout Group :(

Графический интерфейс пользователя

Запутался в Content Size Fitter и Vertical Layout Group :(

Сообщение Valentinus 02 апр 2017, 17:09

целый день убил на простую задачу, но только в корень запутался.... :( помогите, а?

нужно вывести диалог в канвасе, использую ScrollView в котором создаю фразы отдельными Text`ами.

проблема с обрезанием и выравниванием.

нужно чтобы Text по ширине растягивался равным Content, а по высоте - по количеству текста внутри. (прокрутка будет только по вертикали)

у Text`ов я поставил по горизонтали перенос (Wrap) ; по вертикали Overflow (иначе если ставить Truncate то текст режется, и далее по высоте уже Text не раздвигается).
к Content у ScrollView я добавил Content Size Fitter (где выбрал для высоты Prefffered), а ширину Content установил как у Viewport
и к Content еще добавил Vertical Layout Group :
если в Control Child Size отмечаю только heigh и в Child Force Expand отмечаю width и heigh, то Text остается дефолтной ширины, т.е. не растягивается до границ Content (по вертикали увеличивается чтоб вместить весь текст, с переносом строк),
если ставлю еще галочку Control Child Size на width, то Text раздвигается в одну строку улетая за экран (т.е. Text становится максимально большим, чтоб вместить тест безе переноса).

я никак не могу заставить Text стать по ширине равным Content , а по высоте - сколько нужно для вмещения текста. @-)

в обучайках все красиво - там кидают контролы на ScrollView и ручками ставят им ширину. а у меня Text`ы делаются из префабов, мне нужно чтоб он при внедрении в сцену подстроился под скроллвью.

PS https://docs.unity3d.com/ru/current/Man ... tSize.html читал, не помогло :(
Последний раз редактировалось Valentinus 02 апр 2017, 21:23, всего редактировалось 2 раз(а).
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Запутался в Content Size Fitter и Vertical Layout Group :(

Сообщение Valentinus 02 апр 2017, 21:16

в принципе, я мог бы даже вручную установить нужную ширину Text, но я не соображу - как мне получить ширину родительского Viewport.
я пробую получить rect из его RectTransform, но он возвращает 0 (на этапе Start())

g_obj.GetComponent<Transform> ().parent.GetComponent<RectTransform> ().rect.width возвращает 0
g_obj.GetComponent<Transform> ().parent.parent.GetComponent<RectTransform> ().rect.width возвращает 0
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Запутался в Content Size Fitter и Vertical Layout Group :(

Сообщение Valentinus 02 апр 2017, 22:18

блин, еще одна беда - почему-то перестали удалиться клоны-префабы текста - после останова они остаются в сцене, и так копятся после каждого запуска...
не могу понять, что я случайно мог нажать??!!! как это отключить???
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Запутался в Content Size Fitter и Vertical Layout Group :(

Сообщение Valentinus 02 апр 2017, 22:59

кажется , победил.

для тех кто тоже будет это делать, надо:

1) у Text включить по горизонтали Wrap и по вертикали Overflow
2) у Content добавить Content Size Fitter и Vertical Layout Group
3) у Content ширину установить по ширине Veiwport , в настройках Content Size Fitter выбрать для вертикали Prefffered, а для горизонтали Unconstrained
4) в Child Force Expand отметить только width
5) в Control Child Size отметить width и heigh
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33


Вернуться в uGUI

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1