Unity — средство подбора размера контента работает неправильно с несколькими уровнямиC#

Место общения программистов C#
Ответить
Anonymous
 Unity — средство подбора размера контента работает неправильно с несколькими уровнями

Сообщение Anonymous »


У меня есть случай, когда я пытаюсь использовать 3 средства подбора размера контента на 3 разных уровнях, но только самый низкий из них работает правильно.

Вот макет.

ScrollRect |-Панель содержимого: макет вертикальной группы, ширина и высота дочернего принудительного расширения проверены. |- Panel2 — Подбор размера контента, вертикальная подгонка = предпочтительный размер |- Panel3 — Настройка размера контента, вертикальная подгонка = предпочтительный размер |- Text Mesh Pro (многострочный) — Настройка размера контента, вертикальная подгонка = предпочтительный размер Поскольку мне не удалось заставить это работать, я создал простой скрипт и поместил его на Panel2 и Panel3.

[ExecuteInEditMode] общедоступный класс PanelLayoutUpdater: MonoBehaviour { [Сериализефилд] частный GameObject childObject; частная панель RectTransformRectTransform; частный RectTransform childRectTransform; частная ширина поплавка; частное недействительное обновление() { НастроитьВысотуПанели(); } недействительный старт() { PanelRectTransform = GetComponent(); ширина = PanelRectTransform.sizeDelta.x; childRectTransform = childObject.GetComponent(); } недействительный НастроитьPanelHeight() { если (childRectTransform!= ноль) { Vector2 childSize = childRectTransform.sizeDelta; PanelRectTransform.sizeDelta = новый Vector2(ширина, childSize.y + 10f); } } } Проблема этого подхода — время, необходимое для определения размера Контента. После запуска теста я ожидаю, что прямоугольник прокрутки окажется внизу, но каждый раз он оказывается на несколько строк выше нижнего.

частный void Test() { var msg = @"New Text, это будет более длинное сообщение, чтобы увидеть, автоматически ли размеры текстового поля позволяют отображать больше текста. Если это сработает, оно должно изменить размер родительской панели, которая, в свою очередь, должна изменить размер ее родительской панели. панель. Здесь работает установщик размера контента. Это еще работает?"; для (int я = 0; я
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»