LaiYizhou / Unity-ReuseScrollView

循环ScrollView(简单版本,Add即用,无需继承,带Nevigate功能)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unity-ReuseScrollView

Unity3D使用ScrollView时,实现Item内容循环重复使用(简单版本,Add即用,无需继承

1. 简介

在Unity3D中,使用ScrollView时,会生成一系列子物体进行滑动

(注:这些子物体在本文档及代码中称为 “Item”)

当Item过多时,可以根据重复循环使用视图内的Item,以节约资源

其中关键点,大致两点:

第一,滑出去的Item 重新移位,衔接滑进来的效果

第二,随着一系列Item的不断滑动,要准确定位当前Item的索引

脚本 ReuseScrollView.csReuseItem.csReuseItemData.cs 则可以实现此功能。

2. 建议用法

  • 第一步:将 ReuseScrollView.cs 挂在ScrollView上

20181227163105

其中,Scroll Direction 为方向,Spacing 为间距

  • 第二步:在准备用来做 Item 的Prefab 挂上 ReuseItem.csReuseItemData.cs

20181227163137

  • 第三步:自定义 ReuseItemData.cs 数据 和 UpdateSetDataToItem() 方法

    示例 详见代码

  • 第四步:调用 BuildContent() 即可

    void BuildContent(GameObject go, List<ReuseItemData> dataList, float spacing = 20.0f)

    示例 详见 Test.cs

3. Demo及题外话

demo

在 AssetStore 中也有类似的插件:

  1. https://assetstore.unity.com/packages/tools/gui/infinity-scrollview-for-ugui-67771
  2. https://assetstore.unity.com/packages/tools/gui/reusescroller-106279

Update June 28, 2019

4. Nevigate功能

由于Item是重复循环使用,无法指定某个Item定位,所以参数为 index

调用 Nevigate() 即可

void Nevigate(int index)

vertical

horizontal

About

循环ScrollView(简单版本,Add即用,无需继承,带Nevigate功能)


Languages

Language:C# 100.0%