Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        /// <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>());
            }
        }