NGUI Grid填充方法(对象池处理方式,性能优化)
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); } }