【插件】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里面即可。
===========项目紧急,其他功能尚未深入研究