InfiniteScrollView
Coding Style wiki
InfiniteScrollView 为无限列表的抽象基类 (继承 UIBehaviour,并以 RequireComponent 要求同对象上挂载 UGUI 的 ScrollRect),以对象池概念对 Cell (InfiniteCell) 进行有效循环利用,仅需少量 GameObject 即可承载大量列表数据;内置四种实现 (ScrollView Variants),也可自行继承扩展定制列表。
| 命名空间 | OxGKit.InfiniteScrollView |
| 类型 | [RequireComponent(typeof(ScrollRect))] public abstract class InfiniteScrollView : UIBehaviour |
| 源码 | InfiniteScrollView.cs |
using OxGKit.InfiniteScrollView;
快速上手
using Cysharp.Threading.Tasks;
using OxGKit.InfiniteScrollView;
using UnityEngine;
public class ListLauncher : MonoBehaviour
{
// 场景上挂载于 ScrollRect 对象的列表组件 (以垂直列表为例)
public VerticalInfiniteScrollView scrollView;
private async void Start()
{
// 1. 初始对象池 (若已于 Inspector 勾选 initializePoolOnAwake 则可省略)
await this.scrollView.InitializePool();
// 2. 批量添加数据后统一刷新 (Add 默认不刷新)
for (int i = 0; i < 1000; i++)
this.scrollView.Add(new InfiniteCellData(new Vector2(100f, 100f), $"Item {i}"));
this.scrollView.Refresh();
// 3. Cell 点击事件 (Cell 端需调用 base.OnClick() 触发)
this.scrollView.onCellSelected += (cell) => Debug.Log($"Selected index: {cell.cellData.index}");
// 4. 移动至指定索引 (0.1 秒补间)
this.scrollView.Snap(50, 0.1f);
}
}