コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }