unity如何得到所有子对象_Unity3d获取物体的所有子物体对象(child)

本文介绍了在Unity3d中如何通过C#脚本获取和删除物体的所有子对象。使用`foreach`循环遍历`transform`来获取子物体,并通过`Destroy(child.gameObject)`删除子物体。注意,直接在循环中删除可能不可靠,建议先存入列表再逐一删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity3d获取物体的所有子物体对象(child)

2018-09-18

更新于:2013.5.18

开始是找了下U3D的SCRIPT手册,发现找不到这玩意。然后在谷歌搜"unity3d get allchild"才找到了答案。很简单的答案,不过挺有意思的,挺好用。

foreach (Transform child in transform)

{

Debug.Log(child.gameObject.name);

}

transform是你所需要找的物体gameobject的transform。这个for循环就相当于遍历了它的子对象,此时你只要做的是将一个个放进个数组里面就行了。想过滤掉一些子物体在循环里面写一下也就OK了。

删除所有子物体的话:

foreach(Transform child in transform){

Destroy(child.gameObject);

}

忘了是什么时候,以前是不可以这样删的,不过现在可以了。

2014.1.3添加:

遍历删除的方法好像是不可以的,还是要将它储存到一个LIST里面一个个去删。貌似有的情况可以有的不可以,很奇怪。

______________________________

如何获得一个GameObject对象的所有孩子对象

各位大虾, 大侠, 请问如何通过c#脚本获得一个GameObject对象的所有孩子对象?

小弟在线等待,多谢多谢^_^

charlie_hou2011-04-10 12:50

我查了查Reference 好像的确没有找到这样的接口

我也是一个初学者,也不太明白为什么不可以……

google了一下,看到了这样一个帖子

(not-Child-Transform)

人家的回复是:

Never use gameobjects!

It"s rare to use gameobjects, use transforms instead!

and I gunaratee u with Transform.Parent function, you"ll solve it within no time.

zcycool2011-04-11 15:03

Transform[] allChildren = parent.GetComponentsInChildren();

foreach (Transform child in allChildren){

//child.gameObject

}

同理,也可以获得所有带Renderer的子对象

Renderer[] allChildren = parent.GetComponentsInChildren();

foreach (Renderer child in allChildren){

//child.gameObject

}

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://www.pinlue.com/style/images/nopic.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值