unity如何得到所有子对象_Unity中获取多级子父节点的对象的两种方式

Unity

中获取多级子父节点的对象的两种方式

第一种方法

Transform getTrans(Transform tt ,string

name){

foreach(Transform trans

in tt){

if(trans.name!=name){

var chile=getTrans(trans,name);

if(chile!=null){

return chile;

}

}

else{

return trans;

}

}

return null;

}

第二种方法

Transform getTrans(Transform tt ,string

name){

for(int i=0 ;i<tt.childCount;i++){

if(tt.GetChild(i).name!=name){

var clild=getTrans(tt.GetChild(i),name);

if(clild!=null){

return clild;

### 创建和管理多级 List 数据结构 在 Unity 中创建和管理多级 `List` 数据结构可以通过多种方式来实现。一种常见的方式是利用嵌套列表,即在一个列表中的每一项又是一个新的列表。这种方式可以有效地表示层次化的数据。 对于更复杂的应用场景,比如构建层级菜单或树形结构的数据展示,可能还需要自定义类来封装这些逻辑[^1]。 #### 使用泛型列表实现简单的多级 List 结构 下面是一段 C# 代码示例展示了如何通过泛型列表来创建一个多层的列表: ```csharp using System.Collections.Generic; public class MultiLevelListItem { public string Name; public List<MultiLevelListItem> Children = new List<MultiLevelListItem>(); } // 初始化根节点并添加节点 var rootItem = new MultiLevelListItem() {Name = "Root"}; rootItem.Children.Add(new MultiLevelListItem() {Name = "Child A"}); rootItem.Children.Add(new MultiLevelListItem() {Name = "Child B"}); foreach (var child in rootItem.Children){ Debug.Log(child.Name); } ``` 这段代码首先定义了一个名为 `MultiLevelListItem` 的类用于存储每一条记录及其下属条目;接着初始化了根元素,并向其下挂载两个孩节点。最后遍历打印出所有的直接项目名称[^2]。 #### 利用 Singleton 单例模式简化访问控制 当涉及到多个脚本之间共享同一份多级列表时,采用单例模式可以帮助更好地管理和维护这份资源。这里给出一个基于前面提到的例改进后的版本,在其中加入了静态属性以便其他组件能够方便地获取当前实例对象而无需每次都重新创建它。 ```csharp using UnityEngine; public sealed class MultiLevelListManager : MonoBehaviour { private static MultiLevelListManager _instance; // 存储顶层项目的集合 public readonly Dictionary<string, MultiLevelListItem> TopItems = new Dictionary<string, MultiLevelListItem>(); /// <summary> /// 获取唯一的 Manager 实例. /// </summary> public static MultiLevelListManager Instance{ get{ if (_instance == null){ GameObject go = new GameObject("MLLMgr"); DontDestroyOnLoad(go); _instance = go.AddComponent<MultiLevelListManager>(); } return _instance; } } void OnDestroy(){ _instance = null; } // 添加新顶级项的方法... } ``` 此方法不仅实现了全局唯一性的特性,还允许跨场景持久保存该管理者实例,从而使得整个应用程序生命周期内都能保持一致的状态[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值