NGUI:如何重置/更新UIgrid&实时添加新项目时的UIScrollBar

时间:2014-09-16 10:27:25

标签: android ios unity3d ngui

我有一个UIScroll Bar和一个包含UIGrid的UIScroll View,如下所示:

  • 滚屏
    • scrollBar(UIScroll Bar)
    • scrollView(UIScroll View)
    • 网格(UIGrid)

我用它们来显示项目列表并向上和向下滚动以查看所有项目, 并且它在开头添加一些项目时有效,但我有一点问题 当我在最后一个地方实时添加新项目时。

当我启动场景时,我在Grid中放了一些项目,我有类似的东西 在层次结构视图中:

  • 滚屏
    • scrollBar(UIScroll Bar)
    • scrollView(UIScroll View)
    • 网格(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。

有没有办法让网格或滚动条向下移动并显示实时添加的最后一项而无需用户交互?

谢谢!

1 个答案:

答案 0 :(得分:2)

我做到了!

itemsGrid .GetComponent()。Reposition(); - &GT;它使网格显示所有项目并更新滚动条。

希望它对其他人有用:)