unity 获取transform的所有子节点

如下,路径存储在dropDownList内

 

 1         ValueDropdownList<string> dropDownList = new ValueDropdownList<string>();
 2 
 3         public ValueDropdownList<string> GetActorPaths()
 4         {
 5             if (actor == null) return null;
 6             dropDownList.Clear();
 7             var actorTrans = actor.transform;
 8             dropDownList.Add("root");
 9             GetAllChild(actorTrans, "root");
10             return dropDownList;
11         }
12 
13         public void GetAllChild(Transform rootTrans, string rootPath = "")
14         {
15             if (rootTrans.childCount == 0) return;
16             var count = rootTrans.childCount;
17 
18             for (int i = 0; i < count; i++)
19             {
20                 var nextPath = rootPath;
21                 var trans = rootTrans.GetChild(i);
22                 nextPath = rootPath + "/" + trans.name;
23                 if (trans.GetComponent<BaseActor>())
24                 {
25                     dropDownList.Add(nextPath);
26                 }
27 
28                 GetAllChild(trans, nextPath);
29             }
30         }

 

posted @ 2022-10-20 16:40  sun_dust_shadow  阅读(188)  评论(0编辑  收藏  举报