Спасибо, статья помогла.
В частности вот это
StartCoroutine(locateFirst());
}
IEnumerator locateFirst()
{
yield return new WaitForSeconds(0.5f);
ScrollRect sr = _content.parent.GetComponent<ScrollRect>();
sr.verticalNormalizedPosition = 1.0f;
}
Походу оно не выставлялось, потому что когда у меня это было не корутиной, айтемы еще не были правильно выставлены в контейнере, и код неправильно брал координаты текущей локации.
Что касается проблемы у автора этого кода, что из-за
yield return new WaitForSeconds(0.5f);
скролл прокручивался после открытия окна и было некрасиво, то я сделала
yield return null;
А выполнение корутины на onEnable окна. И все отлично работает.
Теперь проблема в другом. Есть два окна, в котором надо показывать эту шнягу. У меня есть префаб, в котором, собственно и находится этот скролл вместе с сопутствующими скриптами и данными. Но в одном окне высота вьюпорта 1200 пикселей, а в другом - 800. Соответственно, чтобы красиво показывалась текущей, к примеру, вторая локация, у первого окна verticalNormalizedPosition должен быть 0.2, а у второго - 0.25. А считается все почему-то одинаково 0.2. И только в одном окне все выглядит нормально.
Сейчас ума не приложу, как сделать так, чтоб везде считалось нормально. Сделать им одинаковый размер не вариант, так как в одном окне скроллер - это часть окна, а в другом занимает все окно.
UPD: пофиксила. Сделала одинаковым размером, но поменяла одному из них скейл. Теперь у них одинаковые verticalNormalizedPosition .