1.导包
将EnhancedScroller v2.15.6.unitypackage导入到场景中
2.创建画布
创建一个canvas画布
3.创建Scroll
在画布下创建一个UI->Scroll View,将组建内Scrollbar Horizontal/Vertical两个滑动条删除,删完就是这样
4.准备脚本
需要准备三个脚本,Manager、CellView、Data,
介绍
-
Manager脚本负责将预制体(CellView)和数据(Data)通过什么方式去结合呈现
-
CellView脚本负责把数据写入预制体对应的位置(例如预制体的子物体有一个Text,该脚本负责把数据写入这个Text.text上)
-
Data脚本负责定义数据类型
Manager脚本
查看脚本RankingManager.cs
需要继承MonoBehaviour(可以将脚本挂在到场景物体上)与实现IEnhancedScrollerDelegate(需要实现3个方法)
第一步,创建成员
// 数据列表(Data就是上面三脚本之一)
private SmallList<Data> _data;
// 列表控制器(插件的核心控制器)
public EnhancedScroller scroller;
// 列表元素预制体
public EnhancedScrollerCellView cellViewPrefab;
第二步,初始化脚本
void Start()
{
// 控制器绑定(核心控制器需要一个委托脚本,也就是Manager脚本)
scroller.Delegate = this;
// 装载数据(自定义方法,用于为列表_data添加数据并渲染)
LoadData();
}
第三步,添加数据
/// <summary>
/// 给list添加具体的数据
/// </summary>
private void LoadData()
{
// new 一个具体的list
_data = new SmallList<Data>();
// 装填数据
for (var i = 0; i < 30; i++)
{
_data.Add(new Data()
{
});
// 测试打印看是否成功
Debug.Log(_data[i].ranking);
}
// 刷新数据
scroller.ReloadData();
}
第四步,实现接口
/// <summary>
/// 一个重写,告诉滚动器应该分配空间的单元格条数。这应该是_data数据的长度
/// </summary>
/// <param name="scroller"></param>
/// <returns></returns>
public int GetNumberOfCells(EnhancedScroller scroller)
{
return _data.Count;
}
/// <summary>
/// 这将告诉滚动器给定单元格的大小。
/// 单元格条数可以是任何大小,不需要是统一的。
/// 对于垂直滚动条,单元格的大小将是高度。
/// 对于水平滚动条,单元格的大小将是宽度。
/// </summary>
/// <param name="scroller"></param>
/// <param name="dataIndex"></param>
/// <returns></returns>
public float GetCellViewSize(EnhancedScroller scroller, int dataIndex)
{
// 这个是根据数据索引值的余数来的,要不是长30,要不长100
// return (dataIndex % 2 == 0 ? 30f : 100f);
return 20f;
}
/// <summary>
/// 获取新的数据(上划时候,滚动器会将最上面的CellView移动到最下面,此时需要这个方法为CellView提供数据)
/// </summary>
/// <param name="scroller"></param>
/// <param name="dataIndex"></param>
/// <param name="cellIndex"></param>
/// <returns></returns>
public EnhancedScrollerCellView GetCellView(EnhancedScroller scroller, int dataIndex, int cellIndex)
{
// 谁出了超出那个框了,获取谁的预制体
ScoreCellView cellView = scroller.GetCellView(cellViewPrefab) as ScoreCellView;
// 名字切换一下
cellView.name = "Cell " + dataIndex.ToString();
// 写入一个新的数据
cellView.SetData(_data[dataIndex]);
// 把装好的cellView返回
return cellView;
}
CellView脚本
查看脚本 ScoreCellView.cs
需要继承EnhancedScrollerCellView
第一步,准备需要绑定的对象
public Text name;
第二步,写入这个对象
public void SetData(Data data){
name.text = data.name;
}
Data脚本
查看脚本 ScoreData.cs
无继承,只需要准备对应的数据类型即可
public string name;
5.绑定脚本
第一步,将EnhancedScroller脚本(插件主脚本)挂在到ScrollView上(也就是和ScrollRect组件一个对象上)
这个脚本直接 add Component 搜
第二步,将CellView挂在到需要批量显示的预制体上,并绑定对应的对象
第三步,将挂载好的预制体放到资源文件夹中
第四步,将Manager脚本挂载到一个空物体上(这个空物体决不能销毁),并且将主控制器(EnhancedScroller脚本对象)拖入到Scroller中,将预制体(ScoreClip/CellView)拖入到Cell View Prefab中
至此,步骤基本完毕,点击运行游戏运行
三脚本代码
链接: https://pan.baidu.com/s/1lqPwmaCy7KKUzFL9y3_XTA?pwd=mb5n 提取码: mb5n 复制这段内容后打开百度网盘手机App,操作更方便哦