发布时间:2017-04-28责任编辑:朱明 浏览:2204
当我们坐一个需要展示很多条数据的显示界面时,如果一股脑全部出来展示可能会造成界面卡顿,这时候我们可以做一个动态加载,即先加载一部分,剩余的等翻到最后的时候在动态加载一部分,直到全部加载完成;这样可以就可以优化界面的加载速度了。不多说,上代码。
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class NewBehaviourScript : MonoBehaviour
{
//滑动列表
[SerializeField]
ScrollRect _scrollView;
//数据item根节点
[SerializeField]
Transform _testRoot;
//数据item
[SerializeField]
GameObject _testItem;
//记录现在显示的item的数量
int _indexNum = 0;
List<int> _dataList = new List<int>();
//一次加载item数据
int _onceCount = 20;
// Use this for initialization
void Start()
{
//ScrollRect添加监听
_scrollView.onValueChanged.AddListener(ValueChangeCheck);
//初始化List
_dataList.Clear();
for (int i = 0; i < 100; i++)
{
_dataList.Add(i);
}
//进入界面时加载一部分item,如果不足设定的好的一次加载的数据数目(_onceCount),则全部加载
int firstcount = 0;
if (_dataList.Count >= _onceCount)
{
firstcount = _onceCount;
}
else
{
firstcount = _dataList.Count;
}
for (int i = 0; i < firstcount; i++)
{
_indexNum++;
GameObject go = GameObject.Instantiate<GameObject>(_testItem);
go.transform.SetParent(_testRoot, false);
testItem item = go.GetComponent<testItem>();
if (item)
{
item.SetItem(_dataList[i]);
}
//打印list数据
Debug.Log(_dataList[i]);
}
}
public void ValueChangeCheck(Vector2 vec)
{
//打印滑动列表的滑动位置信息
Debug.Log(vec);
//vec.y < 0时表示滑动列表滑到最底部
if (vec.y < 0)
{
//检查数据还有没加载出来的,继续加载,若全加载完毕则不执行操作
if (_indexNum < _dataList.Count)
{
int addcount = 0;
//剩余数据数量
int leftcount = _dataList.Count - _indexNum;
int indextemp = _indexNum;
//如果剩余数量不足设定的好的一次加载的数据数目(_onceCount),则全部加载
if (leftcount >= _onceCount)
{
addcount = _onceCount;
}
else
{
addcount = leftcount;
}
for (int i = 0; i < addcount; i++)
{
_indexNum++;
GameObject go = GameObject.Instantiate<GameObject>(_testItem);
go.transform.SetParent(_testRoot, false);
testItem item = go.GetComponent<testItem>();
if (item)
{
item.SetItem(_dataList[indextemp + i]);
}
//打印list里本次加载的数据
Debug.Log(_dataList[indextemp + i]);
}
}
}
}
}
如图所示,滑动列表组件

我在数据表里存了0-99的int值,一开始进入界面时会加载一部分数据,查看打印窗口可以看到打印出了0-19。如图所示

滑动滑动列表会持续输出滑动列表的位置信息。如图所示

当滑动到最底部时,会再次加载一部分数据,查看打印窗口可以看到打印出了20-39。如图所示

继续滑动一直到全部加载完成,就不再此赘述了。
春秋工作室 供稿