在开发游戏的时候,经验会遇到这样的需求:移除某个物体下面的所有子物体,比如排行榜列表的刷新,清空某个列表等。虽然Unity3d提供了一些现成的API可以操作,但是要正确移除一个物体下的所有子物体,还需要注意一些问题

通过Transfrom的childCount属性可以获取当前物体有多少个子物体

parent.transform.childCount

通过transform.get(index)方法返回的是子物体的transform,直接移除是不对的

Transform transform;
for(int i = 0;i < parent.transform.childCount; i++)
{transform = parent.transform.GetChild(i);GameObject.Destroy(transform);//这里移除的是transform组件,运行的时候会报错
}

在移除的过程中,不会立刻改变childCount的数量,下面这种写法是错误的,会造成死循环

while(parent.transform.childCount > 0)
{Transform transform = parent.transform.GetChild(0);GameObject.Destroy(transform.gameObject);
}

还有一个错误是调用DetachChildren,该方法不会删除子游戏物体,只是解除了父子关系,所有的子物体将直接成为场景内的物体存在。

parent.transform.DetachChildren();

正确移除是这样的

public static void RemoveAllChildren(GameObject parent)
{Transform transform;for(int i = 0;i < parent.transform.childCount; i++){transform = parent.transform.GetChild(i);GameObject.Destroy(transform.gameObject);}
}

Unity3d 移除某个GameObject的所有子物体相关推荐

  1. div自己移除自己/移除div下面的所有子元素

    let remove = {/*div自己移除自己*/myself: function (sel) {sel = typeof sel === "string" ? documen ...

  2. unity深度查找某个子物体和遍历所有子物体方法

    本文总结一下关于unity的查找子物体的方法 首先说明一下这里将讲三种查找子物体方法: 查找固定路径的某一个子物体的方法.通过名字深度查找某个子物体的方法.查找父物体下所有子物体的方法. 第一:查找固 ...

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

    1.直接使用for循环,遍历子物体,使用依次Destory直接销毁子物体: Destroy(parent.GetChild(i).gameObject); /// <summary>/// ...

  4. 【Unity】获取当前物体下的所有子物体

    使用Transform.GetComponentsInChildren<>()的方法来获取指定物体下的所有子物体,并复制给数组,然后进行遍历 activePanel为指定物体,string ...

  5. 在Unity中获得一个物体的所有子物体包括孙物体。

    看API时想到了这个问题,如何获得一个物体的所有子物体,在Unity的API有这个函数 Component.GetComponentsInChildren 获取子物体组件列表. 首先是在Unity软件 ...

  6. 【Unity3D游戏开发】GameObject.Find()、Transform.Find查找隐藏对象 (十)

    GameObjectFindTransformFind查找游戏对象 前置条件 相关API 1 GameObjectFind 2 TransformFind 3 其他查找 实际测试 即使隐藏root节点 ...

  7. 【Unity3D】Unity 游戏画面帧更新 ( 游戏物体 GameObject 移动 | 借助 Time.deltaTime 进行匀速运动 )

    文章目录 一. 游戏物体 GameObject 移动 二. 借助 Time.deltaTime 进行匀速运动 一. 游戏物体 GameObject 移动 在 Unity 中 , 如果想要让 游戏物体 ...

  8. Unity3D将物体的所有子物体设置为半透明

    第一步: 添加一个类,挂到物体的父物体上.如下 using System.Collections; using System.Collections.Generic; using UnityEngin ...

  9. unity3d 如何遍历一个物体下的所有子物体 (包括active为false的子物体)

    一. Gameobject.Find("游戏对象名")  //根据对象名直接获取游戏对象 这个方法可以找到指定的对象,但是一些缺陷. 缺陷1:如果场景中有重名,此方法找到的是Hie ...

最新文章

  1. python入门编程软件免费-Python编程干货免费领取!!!
  2. 鸡啄米vc++2010系列35(工具栏资源及CToolBar类)
  3. resin常见有关问题
  4. 关于Python IDE自动补全功能不好用的问题,解决方案
  5. 华强北耳机版本太多,不知道如何选购?
  6. Python外(4)-读写mat文件
  7. Python使用笔记总结目录
  8. c/c++笔试面试题(1)
  9. asp.net1002-公司人事管理信息系统#毕业设计
  10. 禅道及与JIRA区别
  11. Typora恢复文件,找回忘记保存的记录
  12. hadoop kerberos java_hadoop kerberos认证
  13. 优麒麟系统安装MySQL_优麒麟Linux(Ubuntu Kylin)简易安装手册
  14. 函数重载导致的二义性
  15. 用Excel写个摸球模拟器玩玩
  16. sql server 完全卸载后报错unknown\comopnents\.....\...... vertify that you have sufficient access to thatkey
  17. 海报设计如何做好文案超多的海报
  18. 《Django By Example》读书笔记 03
  19. iPhone 13如何显示电量百分比?详细教程
  20. 设计,构建线框图和对Android应用进行原型制作:第2部分

热门文章

  1. 聊聊明初应对帝国北方局势所做部署
  2. 第三章——stm32f103zet6点亮LED
  3. google map限制地图缩放级别和显示范围
  4. http://extasp.net/ 浴火重生
  5. 招贤纳士 | 中国联通数据库团队
  6. 身份信息在省际间传递可能存在漏洞的思考
  7. 德国应用计算机科学,2021德国计算机科学与技术专业大学排名TOP10
  8. sharepoint页面嵌入_Part 1: 如何把Power BI 嵌入到sharepoint 网站
  9. 计算存款本息(错误记录)
  10. LaTeX常用的数学符号