動的に生成した複数のオブジェクトをまとめて削除する方法

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class objectSpawnerScript : MonoBehaviour
{
public GameObject prefab;
public float spawnInterval = 1.0f;
GameObject myPrefabInstance;

private void Start()
{
    StartCoroutine(SpawnObjects());

    Invoke("ExecuteMethod", 5f);
}

IEnumerator SpawnObjects()
{
    while (true)
    {
        Vector3 randomPosition = new Vector3(Random.Range(-5f, 5f), Random.Range(0f, 5f), Random.Range(-5f, 5f));
        myPrefabInstance = Instantiate(prefab, randomPosition, Quaternion.identity);
        myPrefabInstance.tag = "shikaku";

        yield return new WaitForSeconds(spawnInterval);
    }
}


void ExecuteMethod()
{
    // 実行したい処理をここに書く
    Debug.Log("5秒後に実行されました");

    // 名前を使ってGameObjectを検索
    GameObject[] gameObjects = GameObject.FindGameObjectsWithTag("shikaku");
    foreach (GameObject gameObject in gameObjects)
    {
        Destroy(gameObject);
    }

}

}

GameObject.FindGameObjectsWithTagGameObject.FindObjectsOfTypeなどの関数を使用して、特定の名前やタグ、コンポーネントを持つGameObjectのリストを取得します。

// 名前を使ってGameObjectを検索
GameObject[] gameObjects = GameObject.FindGameObjectsWithTag(“MyPrefabTag”);

取得したGameObjectのリストをループ処理で回して、それぞれのGameObjectを削除します。

// タグで検索した場合

foreach (GameObject gameObject in gameObjects) { Destroy(gameObject); }

オブジェクトにタグをつける方法

Prefabにタグを付けるには、まずUnityエディタ内でタグを追加し、その後生成したPrefabのインスタンスに対してタグを設定します。以下の手順で実現できます。

  1. Unityエディタでタグを追加する:
    • メニューバーから「Edit」>「Project Settings」を選択して、Project Settingsウィンドウを開きます。
    • 左側のメニューから「Tags and Layers」を選択します。
    • 「Tags」セクションの「+」ボタンをクリックして、新しいタグを追加します。ここでは「VT」という名前のタグを追加します。
  2. スクリプト内でPrefabにタグを設定する:
    • Prefabを生成した後、生成したインスタンスに対して追加したタグを設定します。以下のコード例を参考にしてください。

// Prefabを生成
GameObject myPrefabInstance = Instantiate(myPrefab, position, rotation) as GameObject;

// 生成したインスタンスに「VT」というタグを設定
myPrefabInstance.tag = “VT”;

この記事が気に入ったら
フォローしてね!

コメント

コメントする

目次