前提・実現したいこと
あるオブジェクトの子オブジェクトをすべて削除したうえで、再度、子オブジェクトを作成、順番に処理をしたいと考えています。
今当たっている問題は、子オブジェクトをDestroyしたあとでも同一フレーム内では存在しているような動きをすることです。
下にテストしてみたコードを載せました。Instantiate前、Instantiate後、Destroy後の3か所で子オブジェクトの数を出力していますが、出力は{0,10,10}となっています。
該当のソースコード
unity
1public class test : MonoBehaviour { 2 public GameObject outer; 3 public GameObject inner; 4 // Use this for initialization 5 void Start () { 6 Debug.Log(outer.transform.childCount); 7 8 for (int i = 0; i < 10; i++) { 9 GameObject obj = Instantiate(inner); 10 obj.transform.parent = outer.transform; 11 } 12 13 Debug.Log(outer.transform.childCount); 14 15 foreach (Transform item in outer.transform) { 16 Destroy(item.gameObject); 17 } 18 19 Debug.Log(outer.transform.childCount); 20 } 21} 22
試したこと
上にテストしてみたコードを載せました。Instantiate前、Instantiate後、Destroy後の3か所で子オブジェクトの数を出力していますが、出力は{0,10,10}となっています。
1つの仮説としては、Destroyはフレーム終了後に処理されているのかではないかということです。それであれば、最後の出力が10になるのは説明できるかと思います。
この仮説で合っているのであれば、それに合わせたコードを考えたいと思いますが、Destroyの処理タイミングについて教えていただければと思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/02 01:47