Unity 自定义多级树状目录

 1、功能实现效果

2、目录逻辑

public class CatalogLogic
{
    protected CataloguePanel uIBase;

    Dictionary<string, CatalogueConfig.ConfigField> catalogueDic;

    public List<CatalogueConfig.ConfigField> catalogueNodeList;


    public CatalogLogic(CataloguePanel uIBase, Dictionary<string, CatalogueConfig.ConfigField> catalogueDic)
    {
        this.uIBase = uIBase;
        this.catalogueDic = catalogueDic;
    }


    public void Start(UnityAction initAction)
    {
        MeridanAcupointsCatalogueData.Instance.ClearCatalogueItemDataDic();

        TreeNode<CatalogueConfig.ConfigField> catalogueData = CreateCatalogueNodeData();

        Transform catalogueContentTrans = uIBase.catalogueContent;

        SetCatalogueData(catalogueData, catalogueContentTrans);

        initAction?.Invoke();

    }


    public UnityAction<CatalogueItem.Data, bool> ModelShowHidAction;

    /// <summary>
    /// 创建目录 节点数据
    /// </summary>
    public TreeNode<CatalogueConfig.ConfigField> CreateCatalogueNodeData()
    {

        catalogueNodeList = catalogueDic.Values.ToList();

        TreeNode<CatalogueConfig.ConfigField> rootNode = new TreeNode<CatalogueConfig.ConfigField>(catalogueDic["-1"]);

        SetCatalogueNodeData(rootNode);

        return rootNode;


    }


  
 


    private List<string> GetParentAllId(string id, List<string> ids)
    {
        if (catalogueDic.ContainsKey(id))
        {
            ids.Add(id);
            var data = catalogueDic[id];
            return GetParentAllId(data.parentDirectoryID, ids);
        }
        else
        {
            return ids;
        }

    }

    private void GetBrotherAllId(string id, List<string> ids)
    {
        if (catalogueDic.ContainsKey(id))
        {
            var data = catalogueDic[id];

            foreach (var item in catalogueDic)
            {
                if (item.Value.parentDirectoryID == data.parentDirectoryID)
                {
                    ids.Add(item.Value.ID);
                }
            }


        }

    }

    public virtual void CataloguePosButtonList(CatalogueItem.Data data)
    {
        if (data.catalogueItemState == CatalogueItem.CatalogueItemState.PickOn)
        {
            List<GameObject> modelDatas = new List<GameObject>();

            List<string> allModelID = new List<string>();

            allModelID.Add(data.catalogueNodeItemData.ID);//data.Id

            allModelID.AddRange(data.childs);

            for (int i = 0; i < allModelID.Count; i++)
            {
                string modelId = allModelID[i];

            }

        }



    }

    private void GetChildAllId(string id, List<string> ids)
    {
        if (catalogueDic.ContainsKey(id))
        {
            foreach (var it
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值