Unity 无限滚动列表

1.使用scroll view,设置(例如width 500,height 200),关联脚本ScrollList

using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;

public class ScrollList : MonoBehaviour
{
    //获取滚动视图组件
    public ScrollRect scrollRect;

    //获取滚动视图的内容对象
    public RectTransform content;

    //定义一个数据结构,表示地址和数量
    [System.Serializable]
    public struct Data
    {
        public int ID; //编号
        public string Name; //姓名
        public string Sex; //性别
        public string Addr; //地址
    }

    //定义一个列表,存储数据
    public List<Data> dataList; 

    public int number = 5; //测试默认5个


    //定义一个预制体,表示列表项的样式
    public GameObject itemPrefab;

    //在开始时,根据数据列表生成列表项并添加到滚动视图中
    void Start()
    {
        //添加一条数据
        Data newData = new Data();
        newData.ID = 1;
        newData.Name = "li";
        newData.Sex = "nan";
        newData.Addr = "beijing";
        dataList.Add(newData);
        //遍历数据列表
        //foreach (Data data in dataList)
        for (int i = 0; i < number; i++)

        {
            
            //实例化一个列表项对象
            GameObject item = Instantiate(itemPrefab, content);

            //检测奇偶数换色
            if (i % 2 == 1) {
                item.GetComponent<Image>().color = Color.cyan;
            }
            Row row = item.GetComponent<Row>();
            
            row.SetData(dataList[0].Name, "Field 2", "Field 3");

        }
    }

    
}

2.scroll view 对应的配置,脚本组件对应拖过去。

3.viewport 配置颜色color ,勾选show mask graphic(遮挡子物体,铺满)

4.Content 配置,对应配置Height,cell size (每行的配置),spacing 间隔,结合content size filter组件,高度适应滚动。

5.在content下排好一行三个字段视图,table-row 挂载脚本row ,三个Text 拖过去分别关联脚本字段,然后做出预制体。

using UnityEngine;
using UnityEngine.UI;

public class Row : MonoBehaviour
{
    public Text nameText;
    public Text sexText;
    public Text addrText;

    public void SetData(string name, string sex, string addr)
    {
        nameText.text = name;
        sexText.text = sex;
        addrText.text = addr;
    }
}

Unity 无限滚动列表是一种常见的UI设计模式,用于在有大量数据的情况下,动态加载和显示列表项,以实现更好的性能和用户体验。 实现无限滚动列表需要以下步骤: 1. 创建一个包含UI元素(例如图标、文本块等)的列表项模板。 2. 创建一个容器对象,用于容纳列表项。这个容器对象可以是 ScrollView 或者使用 Unity 的 UI 布局组件。 3. 在启动时,初始化列表。通常会加载一部分列表项并显示在容器中,同时记录当前显示的第一个和最后一个列表项的索引。 4. 监听滚动事件。当滚动发生时,根据滚动的方向(向上或向下),动态地加载和显示新的列表项。 5. 当滚动到顶部时,加载并显示上一批新的列表项,并删除容器中最后一个列表项。 6. 当滚动到底部时,加载并显示下一批新的列表项,并删除容器中第一个列表项。 7. 重复第4至第6步,直到所有列表项都被加载和显示。 在实现无限滚动列表时,可以使用对象池来优化性能。对象池可以缓存已经创建的列表项对象,而不是每次滚动时都创建新的对象。这样可以避免频繁的对象创建和销毁,提高性能。 此外,还可以将无限滚动列表与数据源绑定,以便在滚动时动态从数据源中加载数据。这样可以实现更高效地处理大量数据的功能。 总而言之,Unity 无限滚动列表是一种非常有用的UI设计模式,可以在处理大量数据时提高性能和用户体验。通过合理的实现和优化,可以实现一个流畅且高效的无限滚动列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值