unity遍历和删除所有子物体

遍历所有子物体的两种方式

foreach (Transform childTr in transform)
{ 
  Debug.Log("childTr子物体名字:"+childTr.gameObject.name);
}
int childCount = transform.childCount;
for (int i = 0; i < childCount ; i++) {
     Debug.Log(transform.GetChild (0).gameObject);
 }

删除所有子物体

  • 删除所有物体..同上两种方式..
  • 尽量不要用foreach销毁,因为foreach销毁,会改变数组内部索引.造成的结果是一部分销毁不了(使用GameObject.DestroyImmediate测试,GameObject.Destroy不会出问题..因为他默认是延迟到下一帧销毁)
  • 推荐下面的销毁方式
for (int i = tr.childCount - 1; i >= 0; i--) {
    Destroy(tr.GetChild(i).gameObject);
}

发表评论