【ハルシオンブログ】Destroyでオブジェクトが消えるタイミングとかとか
おこんにちは。坂内っす。
10月も後半になってきたじゃありませんか!
さすがに寒くなってきましたねぇ 朝方寒くて目ガ覚めてしまったですよ。
みなさんも風邪にお気を付けください。
さて、Unityでこんな構成の時。
子供のオブジェクトを全部消したいってことありますよね。

こんな感じに順番に0番目を消せば消せるんじゃないかと
[Blog20211018.cs]
どうなるかというと、1個目のオブジェクトしか消えません。
Destroyを使用して、オブジェクトが削除されるタイミングは、フレーム更新の完了後のようです。(公式マニュアルによる)
ではこうすればどうなるか。
一応消えます・・・・・
すごいまばらにですが(笑)

こういう時はこうやって消しましょう(過去ブログにも書いたと思いますが)
[Blog20211018.cs]

ちゃんと起動直後に全部まとめて消えてますね。
ということで、Destroyのタイミングについてでした。
あでゅ~ノシ
10月も後半になってきたじゃありませんか!
さすがに寒くなってきましたねぇ 朝方寒くて目ガ覚めてしまったですよ。
みなさんも風邪にお気を付けください。
さて、Unityでこんな構成の時。
子供のオブジェクトを全部消したいってことありますよね。

こんな感じに順番に0番目を消せば消せるんじゃないかと
[Blog20211018.cs]
using UnityEngine;
public class Blog20211018 : MonoBehaviour
{
[SerializeField] GameObject objParent;
void Start()
{
for (int i = 0; i < 5; i++) {
Destroy(objParent.transform.GetChild(0).gameObject);
}
}
}
どうなるかというと、1個目のオブジェクトしか消えません。
Destroyを使用して、オブジェクトが削除されるタイミングは、フレーム更新の完了後のようです。(公式マニュアルによる)
ではこうすればどうなるか。
using System.Collections;
using UnityEngine;
public class Blog20211018 : MonoBehaviour
{
[SerializeField] GameObject objParent;
IEnumerator Start()
{
for (int i = 0; i < 5; i++) {
Destroy(objParent.transform.GetChild(0).gameObject);
yield return null;
}
}
}
一応消えます・・・・・
すごいまばらにですが(笑)

こういう時はこうやって消しましょう(過去ブログにも書いたと思いますが)
[Blog20211018.cs]
using UnityEngine;
public class Blog20211018 : MonoBehaviour
{
[SerializeField] GameObject objParent;
void Start()
{
foreach (Transform trn in objParent.transform) {
Destroy(trn.gameObject);
}
}
}

ちゃんと起動直後に全部まとめて消えてますね。
ということで、Destroyのタイミングについてでした。
あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】ちょっとした遅延処理を書くときにDOVirtualが便利かも? | 【ハルシオンブログ】独自の#ifディレクティブを使用したいとき »
コメント
| h o m e |