/// <summary> /// 刷新显示单项 /// </summary> private void UpdateShowItems() { MyUIGridItem item = null; int count = dataList.Count; for (int index = 0; index < count; index++) { ShowOrHideIndexData(0, index); ShowOrHideIndexData(1, index); } }
/// <summary> /// 创建单项缓存池 /// </summary> private void SpawnPoolItems() { //初始化池大小 int poolCount = 0; //显示区域大小 Vector2 showSize = Vector2.zero; int maxShowColumn = 0; int maxShowRow = 0; if (originViewRect != Rect.zero) { showSize = originViewRect.size; maxShowColumn = Mathf.FloorToInt(showSize.x / cellSize.x); maxShowColumn += Mathf.Abs(showSize.x % cellSize.x) < float.Epsilon ? 0 : 1; maxShowRow = Mathf.FloorToInt(showSize.y / cellSize.y); maxShowRow += Mathf.Abs(showSize.y % cellSize.y) < float.Epsilon ? 0 : 1; poolCount = maxShowColumn * maxShowRow + 2 * (columnLimit + rowLimit + 1); poolCount = Mathf.Min(poolCount, dataList.Count); } else { poolCount = dataList.Count; } ClearShowItems(); GameObject tmpGo = null; MyUIGridItem gridItem = null; int initPoolCount = poolItems.Count; //如果现在对象池不够那么再实例化 for (int i = poolCount; i > initPoolCount; i--) { tmpGo = Instantiate(pbGo, transform); gridItem = tmpGo.GetComponent <MyUIGridItem>(); if (gridItem == null) { gridItem = tmpGo.AddComponent <MyUIGridItem>(); } gridItem.OnUnSpawn(); poolItems.Add(tmpGo.GetComponent <MyUIGridItem>()); } }