これは奇妙なことですが、DestroyImmediate
機能を持つ子オブジェクトを破壊しようとすると、予期せぬ結果になります。編集モード(Unity3d)で子オブジェクトを破壊するにはどうしたらいいですか?
私のケースでは、Unityはすべての子を破壊しませんでしたが、それらの半分だけでした。
foreach(var child in parent)
{
DestroyImmediate(child);
}
これは奇妙なことですが、DestroyImmediate
機能を持つ子オブジェクトを破壊しようとすると、予期せぬ結果になります。編集モード(Unity3d)で子オブジェクトを破壊するにはどうしたらいいですか?
私のケースでは、Unityはすべての子を破壊しませんでしたが、それらの半分だけでした。
foreach(var child in parent)
{
DestroyImmediate(child);
}
一時的な配列/リストを作成することで、1人の人がリンクで検討することができます。例えば
:私を助け
var tempArray = new GameObject[parent.transform.childCount];
for(int i = 0; i < tempArray.Length; i++)
{
tempArray[i] = parent.transform.GetChild(i).gameObject;
}
foreach(var child in tempArray)
{
DestroyImmediate(child);
}
これは私が編集モードで子どもたちを破壊する方法です:
for (int i = this.transform.childCount; i > 0; --i)
DestroyImmediate(this.transform.GetChild(0).gameObject);
DestroyImmediate' 'にユニティのドキュメントから:_Also配列を反復処理したり、反復処理している要素を破棄したりしないでください。これは深刻な問題を引き起こします(Unityだけでなく一般的なプログラミングの練習として)。_ https://docs.unity3d.com/ScriptReference/Object.DestroyImmediate.html –