public override void Dispose()
{
base.Dispose(); //Destroy GameObject tree first, avoid destroying each seperately;
int numChildren = _children.Count;
for (int i = numChildren - 1; i >= 0; --i)
{
DisplayObject obj = _children[i];
obj.InternalSetParent(null); //Avoid RemoveParent call
obj.Dispose();
}
}