unity——删除父物体下面的所有子物体

1、直接使用for循环,遍历子物体,使用依次Destory直接销毁子物体;

Destroy(parent.GetChild(i).gameObject);

    /// <summary>
    /// 清除父物体下面的所有子物体
    /// </summary>
    /// <param name="parent"></param>
    private void ClearChilds(Transform parent)
    {
        if (parent.childCount > 0)
        {
            for (int i = 0; i < parent.childCount; i++)
            {
                Destroy(parent.GetChild(i).gameObject);
            }
        }
    }

2、注意事项:

1、不要使用Foreach遍历来增删元素,在遍历对象不是值类型时,修改集合元素,也不要使用foreach遍历修改。容易导致赋值错误。

foreach是封装的⼀个迭代器,调⽤List的GetEnumrator()⽅法;foreach遍历过程中增删,会使集合的大小和元素索引值发生变化,导致在foreach中增删元素时会抛出异常;foreach遍历过程执行时不是有序执行的,修改引用类型的数据容易导致赋值错误。

2、使用Destory销毁物体时,注意对象类型是gameObject;

Destory可以销毁物体,也可销毁Transform,以及其他类型对象;

猜你喜欢

转载自blog.csdn.net/weixin_43908355/article/details/124927944
今日推荐