(Editor)UI Toolkit 与数据的连接

本文介绍了如何在Unity中使用UIToolkit将数据与ListView组件连接,包括加载数据模板、获取ListView实例、数据加载和ListView生成的过程,展示了如何动态绑定数据到UI元素。
摘要由CSDN通过智能技术生成

(Editor)UI Toolkit 与数据的连接

将面板与数据连接

以ListView做例子:

1.先声明还有呈现的模板

//拿到模板
private VisualTreeAsset itemRowTempLate;
//获得VisualElemwnt
private ListView itemListView;

2.再根据你自己创建的面板查找

//拿到模板数据
itemRowTempLate = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Editor/UI Builder/ItemRow Template.uxml");
//获得ListView
itemListView = root.Q<VisualElement>("ItemList").Q<ListView>("ListView");
//加载数据的函数方法
LoadDataBase();
//生成List View的函数方法
GenerateListView();

3.再将你自己需要呈现的赋值上去

//查找ItemDataList_SO
private void LoadDataBase()
{
    var dataArray = AssetDatabase.FindAssets("ItemDataList_SO");

    if (dataArray.Length > 1)
    {
        var path = AssetDatabase.GUIDToAssetPath(dataArray[0]);
        dataBase = (ItemDataList_SO) AssetDatabase.LoadAssetAtPath(path, typeof(ItemDataList_SO));
    }

    itemList = dataBase.itemDetailsList;
    //如果不标记就无法保存数据
    EditorUtility.SetDirty(dataBase);
    //Debug.Log(itemList[0].itemID);
}
//生成listView
private void GenerateListView()
{
    Func<VisualElement> makeItem = () => itemRowTempLate.CloneTree();

    Action<VisualElement, int> bindItem = (e, i) =>
    {
        if (i < itemList.Count)
        {
            if (itemList[i].itemIcon!=null)
                e.Q<VisualElement>("Icon").style.backgroundImage = itemList[i].itemIcon.texture;
            e.Q<Label>("Name").text = itemList[i] == null ? "NO ITEM" : itemList[i].itemName;
        }
    };


    itemListView.fixedItemHeight = 60;
    //将数据赋值给ListView
    itemListView.itemsSource = itemList;
    itemListView.makeItem = makeItem;
    itemListView.bindItem = bindItem;
    //itemListView.selectionType = SelectionType.Multiple;
}

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值