- Home /
Deleting transforms from Editor
Hi there, so - I have a scene with ObjectA in it. ObjectA has a lot of its children and so on (so it's kind of a container). It has a component named let's say - Component. I wrote an editor class for the Component - ComponentEditor.
Inside the editor there's GUILayout.Button that calls obj.Clear() (Clear() method is written inside Component script). And it works almost fine. The almost is a problem. After clicking the button once - most of objects are indeed destroyed but some are still left on the scene. I have to click button about 4 times to have all it's children destroyed. I want to have this done with a single click.
public void Clear()
{
foreach( Transform tr in transform )
{
DestroyImmediate(tr.gameObject);
}
//CheckStructure();
}
Any help would be much appreciated. :)
EDIT: I just realized - I'm destroying by iterating an array - is there any other way to do so?
Answer by Dave-Carlile · Jan 06, 2016 at 01:10 PM
Yeah, it's most likely the array thing. You can either just use Destroy which will not actually destroy the object until the end of the frame, thus leaving it in the list until them - but I have some vague memory that you must use DestroyImmediate in an editor script? Don't really know for sure if that's the case.
Another option is to iterate through the list in reverse order...
for (int i = transform.childCount - 1; i >= 0; i--)
{
DestroyImmediate(transform.GetChild(i).gameObject);
}
That way if it's removed from the list, on the next iteration i will still point at the correct next item.
Yup, that was it. Thank you very much, that solved the problem. :) Have a great day!
Your answer
Follow this Question
Related Questions
Editor.DestroyImmediate crashes Unity. Am I using it wrong? 3 Answers
How to avoid error message when using DestroyImmediate in Editor 0 Answers
Destroying of parent causes issues for OnDestroy() in children 0 Answers
Toggle bool reset after using DestroyImmediate (On Editor Script) 0 Answers
What should be handled in the custom inspector version of a script? 1 Answer