У меня есть панель UIScroll и представление UIScroll, содержащее UIGrid, например:
- scrollWindow
- scrollBar (UIScroll Bar)
- scrollView (представление UIScroll)
- Сетка (UIGrid)
Я использую их для отображения списка элементов и прокрутки вверх и вниз, чтобы увидеть их все, и это работает, когда некоторые элементы добавляются в начале, но у меня есть небольшая проблема, когда я добавляю новый элемент на последнее место в реальном время.
Когда я запускаю сцену, я помещаю некоторые элементы в сетку, и у меня есть что-то вроде этого в представлении иерархии:
- scrollWindow
- scrollBar (UIScroll Bar)
- scrollView (представление UIScroll)
- Grid (UIGrid)
- item01
- пункт02
- пункт03
Все три пункта отображаются без проблем и отсортированы по алфавиту. У меня также есть функция, которая добавляет новый элемент с именем item04 в сетку, когда я нажимаю какую-либо кнопку:
public void addItem(){
// create a new instance of a prefab
GameObject prefab = Instantiate(Resources.Load("MyItems/TestItem")) as GameObject;
// get the grid
GameObject itemsGrid = GameObject.Find("scrollWindow/scrollView/Grid");
// add the new item in the grid
itemsGrid .GetComponent<UIGrid>().AddChild(prefab.transform);
// set the item name
prefab.name = "item04";
// set the item position
prefab.transform.localScale = new Vector3(1f, 1f, 1f);
prefab.transform.localPosition = new Vector3(0f, 0f, 0f);
itemsGrid .GetComponent<UIGrid>().repositionNow = true;
// From here I try to update the grid and the scroll bar in order to make the
grid to show the last item that is below all of them
GameObject.Find("scrollWindow/scrollBar").GetComponent<UIScrollBar>().value = 1;
GameObject.Find("scrollWindow/scrollView").GetComponent<UIScrollView>().ResetPosition();
}
Проблема в том, что, хотя элемент item04 добавлен, сетка и полоса прокрутки не перемещаются, а элемент item04 не появляется, пока пользователь не перемещает полосу прокрутки вверх и вниз.
Есть ли способ заставить сетку или полосу прокрутки опускаться и отображать последний добавленный элемент в режиме реального времени без взаимодействия с пользователем?
Благодарю вас!