c# - 为什么函数没有递归地返回所有的孩子?
问题描述
void Start()
{
var allchildren = AddDescendantsWithTag(transform);
}
和
private List<GameObject> AddDescendantsWithTag(Transform parent)
{
List<GameObject> list = new List<GameObject>();
foreach (Transform child in parent)
{
list.Add(child.gameObject);
AddDescendantsWithTag(child);
}
return list;
}
但它只返回父级下第一级的子级。
我想深入到最后。
脚本附加到 transform 并且 transform 也是父级。
解决方案
您正在反复分配一个新列表,然后将其丢弃。您可能只想分配一个列表并添加到它。尝试这个:
void Start()
{
var allchilds = new List<GameObject>();
AddDescendantsWithTag(transform, allchilds);
}
private void AddDescendantsWithTag(Transform parent, List<GameObject> list)
{
foreach (Transform child in parent)
{
list.Add(child.gameObject);
AddDescendantsWithTag(child, list);
}
}
推荐阅读
- android - Firebase实时数据库写入崩溃android应用程序
- spring - 使用 Spring WebSocket 操作 CONNECTED 框架
- time-complexity - 是否可以通过简化常数来解决给定的时间复杂度?
- python - 如何在 python-docx 中将图片添加到页眉/页脚
- python-3.x - 如何在此正则表达式中仅排除数字?
- android - 检查本地是否存在 Firestore 文档
- ffmpeg - 无效的 PNG 签名 0xFFD8FFE000104A46。解码流 #0:0 时出错:处理输入时发现无效数据
- vim - FileType 的 Vim autocmd 不能间接工作
- powershell - 从 CSV 文件将随机用户添加到组
- linux - 运行 ps -Af 时出现可疑进程