首页 > 技术文章 > NGUI Grid填充方法(对象池处理方式,性能优化)

jiangjieqim 2015-11-17 13:45 原文

   public static void FillGrid(Transform grid, List<object> list, GameObject obj,int num=0)
    {
        int Count = num;
        if (list != null)
        {
            Count = list.Count;
        }
        if (Count > 0)
        {
            grid.gameObject.SetActive(true);
            int i = 0;
            for (i = 0; i < Count; i++)
            {
                GridItem item = null;
                if (grid.transform.childCount >= i + 1)
                {
                    GameObject _g = grid.transform.GetChild(i).gameObject;
                    if (!_g.activeSelf)
                    {
                        _g.SetActive(true);
                    }
                    GridItem _gItem = _g.GetComponent<GridItem>();
                    if (_gItem != null)
                    {
                        item = _gItem;
                    }
                }
                else
                {
                    GameObject go = GameYTools.cloneGameObject(obj, grid.transform);
                    item = go.GetComponent<GridItem>();
                }
                if (item != null && list!=null)
                {
                    item.Fill(list[i]);
                }
            }

            if (grid.transform.childCount > Count)
            {
                int count = grid.transform.childCount;
                int k = 0;
                for (k = i; k < count; k++)
                {
                    GameObject go = grid.transform.GetChild(k).gameObject;
                    if (go.activeSelf)
                    {
                        go.SetActive(false);
                    }
                }
            }
            UIGrid _grid = grid.GetComponent<UIGrid>();
            if (_grid != null)
            {
                _grid.Reposition();
            }
        }
        else
        {
            grid.gameObject.SetActive(false);
        }
    }

 

推荐阅读