Unity3d 移除某个GameObject的所有子物体
在开发游戏的时候,经验会遇到这样的需求:移除某个物体下面的所有子物体,比如排行榜列表的刷新,清空某个列表等。虽然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的所有子物体相关推荐
- div自己移除自己/移除div下面的所有子元素
let remove = {/*div自己移除自己*/myself: function (sel) {sel = typeof sel === "string" ? documen ...
- unity深度查找某个子物体和遍历所有子物体方法
本文总结一下关于unity的查找子物体的方法 首先说明一下这里将讲三种查找子物体方法: 查找固定路径的某一个子物体的方法.通过名字深度查找某个子物体的方法.查找父物体下所有子物体的方法. 第一:查找固 ...
- unity——删除父物体下面的所有子物体
1.直接使用for循环,遍历子物体,使用依次Destory直接销毁子物体: Destroy(parent.GetChild(i).gameObject); /// <summary>/// ...
- 【Unity】获取当前物体下的所有子物体
使用Transform.GetComponentsInChildren<>()的方法来获取指定物体下的所有子物体,并复制给数组,然后进行遍历 activePanel为指定物体,string ...
- 在Unity中获得一个物体的所有子物体包括孙物体。
看API时想到了这个问题,如何获得一个物体的所有子物体,在Unity的API有这个函数 Component.GetComponentsInChildren 获取子物体组件列表. 首先是在Unity软件 ...
- 【Unity3D游戏开发】GameObject.Find()、Transform.Find查找隐藏对象 (十)
GameObjectFindTransformFind查找游戏对象 前置条件 相关API 1 GameObjectFind 2 TransformFind 3 其他查找 实际测试 即使隐藏root节点 ...
- 【Unity3D】Unity 游戏画面帧更新 ( 游戏物体 GameObject 移动 | 借助 Time.deltaTime 进行匀速运动 )
文章目录 一. 游戏物体 GameObject 移动 二. 借助 Time.deltaTime 进行匀速运动 一. 游戏物体 GameObject 移动 在 Unity 中 , 如果想要让 游戏物体 ...
- Unity3D将物体的所有子物体设置为半透明
第一步: 添加一个类,挂到物体的父物体上.如下 using System.Collections; using System.Collections.Generic; using UnityEngin ...
- unity3d 如何遍历一个物体下的所有子物体 (包括active为false的子物体)
一. Gameobject.Find("游戏对象名") //根据对象名直接获取游戏对象 这个方法可以找到指定的对象,但是一些缺陷. 缺陷1:如果场景中有重名,此方法找到的是Hie ...
最新文章
- python入门编程软件免费-Python编程干货免费领取!!!
- 鸡啄米vc++2010系列35(工具栏资源及CToolBar类)
- resin常见有关问题
- 关于Python IDE自动补全功能不好用的问题,解决方案
- 华强北耳机版本太多,不知道如何选购?
- Python外(4)-读写mat文件
- Python使用笔记总结目录
- c/c++笔试面试题(1)
- asp.net1002-公司人事管理信息系统#毕业设计
- 禅道及与JIRA区别
- Typora恢复文件,找回忘记保存的记录
- hadoop kerberos java_hadoop kerberos认证
- 优麒麟系统安装MySQL_优麒麟Linux(Ubuntu Kylin)简易安装手册
- 函数重载导致的二义性
- 用Excel写个摸球模拟器玩玩
- sql server 完全卸载后报错unknown\comopnents\.....\...... vertify that you have sufficient access to thatkey
- 海报设计如何做好文案超多的海报
- 《Django By Example》读书笔记 03
- iPhone 13如何显示电量百分比?详细教程
- 设计,构建线框图和对Android应用进行原型制作:第2部分