Как сделать чтобы после генерации списка пользователь выдел список начиная с первого элемента?

Внутри канваса создал ScrollView,который содержит в себе Content. Content в свою очередь содержит динамический список.Чтобы все элементы показывались правильно и что размер Сontent'а менялся автоматически,добавил Vertical Layout Group && Content Size Fitter.Всё хорошо работает, но мне нужно чтобы после генерации списка пользователь выдел список начиная с первого элемента,а ни со середины списка. введите сюда описание изображения


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

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

В пайплайне рендера UI элементы отображаются по порядку иерархии.

Что бы их отсортировать нужно либо для всех элементов установить SetParent(null), после чего вернуть в отсортированном порядке:

Transform MainTransform = transform;
List<Transform> Childs = new List<Transform>();
for (int i = 0; i < MainTransform.childCount; i++)
    Childs.Add(MainTransform.GetChild(i));
foreach (Transform child in Childs)
    child.SetParent(null);
// sort
foreach (Transform child in Childs)
    child.SetParent(Transform);

Либо тупо удалить все элементы и создать их заново.

→ Ссылка
Автор решения: Максим Фисман

Насколько я понял, вы хотите вручную через код устанавливать насколько прокручен должен быть ваш ScrollView? Для этого есть 3 свойства: verticalNormalizedPosition, horizontalNormalizedPosition, normalizedPosition.

Первые два - тип данных float от 0 до 1, второе - Vector2, состоящий из первых двух.

Например, таким образом можно установить прокрученность ScrollRect на половину по вертикали:

GetComponent<ScrollRect>().verticalNormalizedPosition = 0.5f;

Чтобы показывать пользователю список с самого начала, нужно установить verticalNormalizedPosition на 1

→ Ссылка