for(int x = 0 ; x < PetEggList.Length ; x++)
{
for(int yy =0 ; yy < PetEggList[x].transform.childCount; yy++)
{
GameObject DestoryEgg = PetEggList[x].transform.GetChild(yy).gameObject;
print(yy + " :: " + DestoryEgg.name );
if(DestoryEgg.name == "Title")
{
continue;
}else
{
Destroy(DestoryEgg);
//DestroyImmediate(DestoryEgg);
}
}
}
{
for(int yy =0 ; yy < PetEggList[x].transform.childCount; yy++)
{
GameObject DestoryEgg = PetEggList[x].transform.GetChild(yy).gameObject;
print(yy + " :: " + DestoryEgg.name );
if(DestoryEgg.name == "Title")
{
continue;
}else
{
Destroy(DestoryEgg);
//DestroyImmediate(DestoryEgg);
}
}
}
其实就是双层循环,删除子节点。
但其中的DestroyImmediate 会让PetEggList[x].transform.childCount;的值实时变化,而Destroy就不会。所以这是一个陷阱
所以PetEggList[x].transform.childCount的值,在进入这个循环体的时候,要事先算好,防止内存的管理造成删除不掉的问题