【笔记】unity 资源树结构VirtualizingTreeView的使用 模型树

【插件】VirtualizingTreeView

感谢插件来源:Virtualizing Tree View - 自购稀缺Unity资源

本插件的主要功能是加载本地资源生成UI目录树,DOME中的功能是生成跟Hierarchy面板一样的UI,想当与该资源面板的副本。

而我这次需要的功能是:只显示项目中模型的树结构功能

一、在项目UI中添加TreeView.prefab预制体,同时添加一个空对象并绑定TreeViewDemo.cs脚本

二、把需要显示的模型树父对象设置Tag,子级不需要设置,然后通过添加判断Tag条件来只显示该模型树

三、添加Tag判断条件:在TreeViewDemo.cs脚本中的Start()方法里在以下代码中添加条件

IEnumerable<GameObject> dataItems = Resources.FindObjectsOfTypeAll<GameObject>().Where(go => !IsPrefab(go.transform) && go.transform.parent == null && go.tag == "Finish").OrderBy(t => t.transform.GetSiblingIndex());

四、点击模型树对象,获得该模型:在TreeViewDemo.cs脚本中添加代码如下

        private void OnSelectionChanged(object sender, SelectionChangedArgs e)
        {
            #if UNITY_EDITOR
            //Do something on selection changed (just syncronized with editor's hierarchy for demo purposes)
            UnityEditor.Selection.objects = e.NewItems.OfType<GameObject>().ToArray();
           #endif

            //获得对象
            foreach (var item in e.NewItems.OfType<GameObject>().ToArray())
            {
                print("测试中。。。" + item.name);
                print(item.gameObject.transform.localPosition);
            }

            //获得上一次点击的对象
            foreach (var item in e.OldItems.OfType<GameObject>().ToArray())
            {
                print(item.gameObject);
            }
            
        }

OnSelectionChanged 此方法原本是在编辑器下运行的,用来展示同步效果的,我们使用时不要将代码写到 #if UNITY_EDITOR里面即可。
           

===========项目紧急,其他功能尚未深入研究

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章