public static void DestroyChildren(this Transform self, Action <Transform> beforeDestroy = null) { Ensure.Argument.NotNull(self, "self"); while (self.childCount > 0) { var child = self.GetChild(0); beforeDestroy.NPInvoke(child); child.SetParent(null); UnityObjectUtil.Destroy(child.gameObject); } }
public static void DestroyChildren(this Transform self, Func <Transform, bool> predicate) { Ensure.Argument.NotNull(self, "self"); var destroyList = new List <Transform>(); for (int i = 0; i < self.childCount; ++i) { var child = self.GetChild(i); if (predicate.NPInvoke(child)) { destroyList.Add(child); } } for (int i = 0; i < destroyList.Count; ++i) { UnityObjectUtil.Destroy(destroyList[i].gameObject); } }