我有一个 UIScroll Bar 和一个包含 UIGrid 的 UIScroll 视图,如下所示:
- 滚动窗口
- 滚动条(UI滚动条)
- 滚动视图(UI滚动视图)
- 网格 (UIGrid)
我使用它们来显示项目列表并上下滚动以查看所有项目,并且在开始时添加一些项目时它可以工作,但是当我在最后一个位置添加新项目时我有一个小问题时间。
当我开始场景时,我将一些项目放在网格中,并且在层次结构视图中有类似的内容:
- 滚动窗口
- 滚动条(UI滚动条)
- 滚动视图(UI滚动视图)
- 网格 (UIGrid)
- item01
- item02
- item03
所有三个项目都显示没有任何问题,并按字母顺序排序。我还有一个函数,当我按下某个按钮时,它会在网格中添加一个名为 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 不会出现,直到用户上下移动滚动条。
有没有什么办法可以让网格或滚动条在没有用户交互的情况下实时显示最后添加的项目?
谢谢!