タイトルの通り
タグを参照してオブジェクトを配列化しその配列からリストを作成する際、削除したはずのオブジェクトも検知してしまいます。
配列化のコードは以下の通りです。
C#
1 public void ListUpdate() 2 { 3 StopCoroutine(cooltimer()); 4 5 enemyList.Clear(); 6 GameObject[] array = GameObject.FindGameObjectsWithTag("Enemy"); 7 enemyList.AddRange(array); 8 9 StartCoroutine(cooltimer()); 10 }
このコードは、EnemyタグのオブジェクトがDestoryメソッドにより削除された後に他のスクリプトから呼び出されるものです。
シーン上のオブジェクトを正確に検知するためにはどのようにすればよいかアドバイスをいただけませんでしょうか。
一応解決策として
以下のように書き直すことで、想定通りの挙動となることは確認できているのですが
上記のコードだけではなぜいけないのかがわからず、原因が知りたいと思った次第です。
C#
1 2 void Update() 3 { 4 if (listUpdate) 5 { 6 enemyList.Clear(); 7 GameObject[] array = GameObject.FindGameObjectsWithTag("Enemy"); 8 enemyList.AddRange(array); 9 10 listUpdate = false; 11 12 StartCoroutine(cooltimer()); 13 } 14 } 15 public void ListUpdate() 16 { 17 StopCoroutine(cooltimer()); 18 19 listUpdate = true; 20 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/30 17:22