Как передвинуть границы Text ' а автоматически под размер текста в юнити?

Имеется Text который является дочерним объектом ScrollRect для того чтобы можно было читать весь текст и листать.Как сделать чтобы конец текста совпадал с границы объекта Text.Пробовал Aspect Ratio Fitter и Content Size Fitter.Юнити выдаёт ошибку введите сюда описание изображения хотя на родительских объектах ничего нет.И после них текст оказывается в середине родительского объекта.

//Да два три таких Panel можно сделать руками,но когда их число составляет 325 лучше через скрипт и префаб. Если у вас есть другие варианты реализации этой штуки,пожалуйста пишите введите сюда описание изображения


Ответы (1 шт):

Автор решения: Yaroslav

Нужны 2 операции:

  1. Canvas.ForceUpdateCanvases что-бы канвас определил размеры элементов и текста.

  2. Теперь ты можеш узнать точную высоту Text.preferredHeight, которую хочет текст и установить её для Content твоего ScrollView.


[DisallowMultipleComponent]

public class TextContent : MonoBehaviour {

    [SerializeField] private Text _text;
    [SerializeField] private RectTransform _content;

    private void Awake () {
        if (_text != null && _content != null) {
            Canvas.ForceUpdateCanvases();
            _content.sizeDelta = new Vector2(_content.sizeDelta.x, _text.preferredHeight);
        }
    }
}
→ Ссылка