- Home /
why is in GetComponentsInChildren parent included?
and how to get all children efficiently detached and back attached?
Transform[] Children = transform.GetComponentsInChildren<Transform>();
foreach(Transform Child in Children){
Destroy(Child.gameObject); // it destroys the parent too
}
transform.DetachChildren();
// ...
for (int i=0; i<Children.Length; i++) {
Children[i].parent = transform;
}
don't ask why as I ain't going to post you 500 lines long code and explaining why with 3 pages long.
just simple question.
and I did destroy method to see what's happening and, ELSE I disable them and reuse them, ...
Answer by Bunny83 · Dec 20, 2013 at 12:24 AM
Why the parent is included? You ask this question to the wrong group of people ;) Feel free to write this to the support :D
Anyways it's well known that it includes itself (even as first element). Your question is a bit confusing since DetachChildren and GetComponentsInChildren work on very different collections (i don't talk about the included parent). GetComponentsInChildren finds all children components even deep nested. DetachChildren on the other hand just affects the immeditate children. So you might want to work on the immediate children only:
using System.Collections.Generic;
using System.Linq;
List<Transform> children = transform.Cast<Transform>().ToList();
ps: Also keep in mind that GetComponentsInChildren usually don't "find" components which are disabled or on deactivated GameObjects. Recently they added an optional bool-parameter to make it find deactivated stuff as well.
Your answer
![](https://koobas.hobune.stream/wayback/20220613124528im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Distribute terrain in zones 3 Answers
Multiple Cars not working 1 Answer
Audio Play Once 2 Answers
Does Scripting Jump exist? (How To use/write goto) 3 Answers