こんにちは!今回は、Unityで同じタグがついたオブジェクトを一度に削除する方法について解説します。Unityを使い始めたばかりの方でも簡単に理解できるように、わかりやすく説明していきますね。
ステップ1: タグの設定
まず、削除したいオブジェクトに同じタグを設定しましょう。タグを設定する方法は以下の通りです:
- Hierarchyウィンドウでオブジェクトを選択します。
- Inspectorウィンドウの上部にあるTagドロップダウンメニューをクリックします。
- ドロップダウンメニューから適切なタグを選択するか、Add Tagを選んで新しいタグを作成します。
- この記事ではBlockとタグのついたオブジェクトを一括消去するようにします。
ステップ2: スクリプトの作成
次に、同じタグがついたオブジェクトを一度に削除するためのスクリプトを作成します。以下の手順でスクリプトを作成しましょう:
- Projectウィンドウで右クリックして、Create → C# Scriptを選びます。
- スクリプトに「DeleteObjectsWithTag」という名前を付けます。
- スクリプトをダブルクリックしてVisual Studioなどのコードエディタで開きます。
このスクリプトは、Unityで特定のタグを持つオブジェクトをクリックしたときに削除するものです。例えば、「Block」というタグが付いたオブジェクトを削除する場合に使います。
各部分の説明
using System.Collections;
とusing System.Collections.Generic;
とusing UnityEngine;
:- 最初の2つの行は、コレクション(リストや配列など)を扱うためのコードです。
UnityEngine
は、Unityの基本機能を使うためのコードです。
- 最初の2つの行は、コレクション(リストや配列など)を扱うためのコードです。
public class DeleteObjectsWithTag : MonoBehaviour
:- これはクラスの宣言です。このスクリプトの名前は
DeleteObjectsWithTag
で、MonoBehaviour
を継承しています。MonoBehaviour
は、Unityでスクリプトを使うための基本的なクラスです。
- これはクラスの宣言です。このスクリプトの名前は
void Update()
:Update
メソッドは、Unityの中で毎フレーム(画面が1回更新されるごと)に呼び出される特別なメソッドです。ここに書かれたコードは、常に実行され続けます。
if (Input.GetMouseButtonDown(0))
:- この行は、マウスの左ボタンが押されたかどうかをチェックしています。
0
は左ボタン、1
は右ボタン、2
は中ボタンを意味します。
- この行は、マウスの左ボタンが押されたかどうかをチェックしています。
GameObject[] objects = GameObject.FindGameObjectsWithTag("Block");
:GameObject.FindGameObjectsWithTag("Block")
は、シーン内の全ての”Block”タグを持つオブジェクトを見つけます。そして、それらを配列objects
に格納します。
foreach (GameObject ball in objects)
:- この行は、見つかった全てのオブジェクトについて繰り返し処理を行うためのループを開始します。
Destroy(ball);
:- ループの中で、各オブジェクトを
Destroy
メソッドで削除します。
- ループの中で、各オブジェクトを
全体の動き
- ゲームが実行されている間、
Update
メソッドが毎フレーム呼ばれます。 - プレイヤーがマウスの左ボタンをクリックすると、
if
文がtrue
になり、その中のコードが実行されます。 GameObject.FindGameObjectsWithTag("Block")
によって、全ての”Block”タグを持つオブジェクトが見つかります。- 見つかったオブジェクトを一つずつ取り出し、
Destroy
メソッドで削除します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DeleteObjectsWithTag : MonoBehaviour
{
void Update()
{
if (Input.GetMouseButtonDown(0))
{
GameObject[] objects = GameObject.FindGameObjectsWithTag("Block");
foreach (GameObject ball in objects)
{
Destroy(ball);
}
}
}
}
ステップ3: スクリプトの適用
最後に、スクリプトをゲームオブジェクトにアタッチします。以下の手順で行います:
- Hierarchyウィンドウでスクリプトをアタッチしたいオブジェクト(空のオブジェクトなど)を選択します。
- 作成した「DeleteObjectsWithTag」スクリプトをドラッグ&ドロップして、選択したオブジェクトにアタッチします。
これで準備完了です!ゲームを実行して、クリックすると、同じタグがついたオブジェクトがすべて削除されるはずです。
まとめ
今回は、Unityで同じタグがついたオブジェクトを一度に削除する方法を紹介しました。タグを設定してスクリプトを書くことで、簡単に実現できます。ぜひ試してみてくださいね!
何か質問があれば、気軽に聞いてください。それでは、良いUnityライフを!
おすすめのアセット
RPG Creation Kitは、UnityでRPGゲームを作成するための便利なツールキットです。このキットには、キャラクター、クエスト、アイテム、戦闘システムなど、RPGゲームに必要な基本機能がすべて含まれています。初心者でも使いやすいように設計されており、ドラッグアンドドロップで簡単に設定できます。また、カスタマイズも自由自在で、自分だけのオリジナルRPGを作ることができます。