はじめに
Unityを使ってゲームやアプリを開発している時、シーンから特定のタグがついたオブジェクトを一度に削除したい場面に遭遇することがあります。たとえば、ゲームのリセット時に特定のアイテムだけを消去したい、またはプレイヤーが特定のエリアに入ったときに、そのエリアの敵を全部消したいという時です。
こうした作業を手作業で行うのは大変ですし、効率も悪いですよね。そこで今回は、Unityで同じタグのついたオブジェクトを同時に削除する方法を、初心者にもわかりやすく解説します。
ステップ1: タグの設定
まず最初に、削除したいオブジェクトにタグを設定する必要があります。Unityエディタでオブジェクトを選択し、「Inspector」パネルの「Tag」ドロップダウンから既存のタグを選択するか、新しいタグを作成します。例えば、「Enemy」というタグを敵キャラクターに設定することができます。
この記事ではBlockとタグのついたオブジェクトを消去するようにします。
ステップ2: スクリプトの作成
次に、オブジェクトを削除するためのスクリプトを作成します。ここではC#を使用しますが、Unityでのスクリプティングが初めての方でも大丈夫。以下のコードを参考にしてください。
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);
}
}
}
}
このスクリプトはUnityで、「Block」というタグがついたすべてのオブジェクトを、マウスの左ボタンをクリックした時に削除する機能を持っています。具体的には、以下のように動作します。
Update
メソッドは、ゲームが実行されている間、毎フレーム呼び出されます。Input.GetMouseButtonDown(0)
は、マウスの左ボタンがクリックされた瞬間を検出します。(ここで、0は左ボタンを示します。)GameObject.FindGameObjectsWithTag("Block")
は、シーン内のすべてのオブジェクトの中から、”Block”というタグが付けられたオブジェクトをすべて見つけ出し、配列に格納します。foreach
ループを使って、見つかったすべてのオブジェクトに対して、Destroy(ball)
メソッドを呼び出し、それぞれを削除します。
ステップ3: スクリプトの適用
作成したスクリプトを動作させるには、任意のゲームオブジェクトにアタッチします。多くの場合、空のゲームオブジェクトを作成し、そこにスクリプトをアタッチすると管理がしやすいです。
Unityの上部メニューから「GameObject」→「Create Empty」を選択し、新しい空のオブジェクトを作成します。次に、作成したスクリプトをドラッグ&ドロップでこの空のオブジェクトにアタッチします。
まとめ
このガイドでは、Unityで同じタグのついたオブジェクトを一括で削除する方法を紹介しました。この方法を使えば、ゲームの開発プロセスをより効率的に進めることができます。コーディングが初めての方でも、少しずつ慣れていきましょう。Unityでの開発は、試行錯誤しながら学ぶことが多いですが、このような簡単なスクリプトから始めることで、徐々にスキルアップしていくことができるでしょう。
Unityでのゲーム開発は楽しくもあり、挑戦的でもあります。小さな成功を積み重ねていくことで、大きなプロジェクトにも対応できるようになります。今回学んだ技術を活かして、素晴らしいゲーム作りに挑戦してください。