Unityでタグのついたオブジェクトをまとめて操作する方法


Unityでタグのついたオブジェクトをまとめて操作する方法


今回は、タグのついたブジェクトをまとめて操作する方法を解説します。

使用する関数


この関数を使用します。
GameObject.FindGameObjectsWithTag(”タグ”);

戻り値はGameObject型の配列です。
※似た関数で、GameObject.FindGameObjectWithTag(“タグ”); があるので注意。(Objectsのsがない)
こちらはオブジェクトが一個だけしか取得できません。
同じタグのついたオブジェクトが複数ある場合、意図したオブジェクトが取得できるとは限りません。

準備として、シーンに”box”というタグ(作成する)をつけたCubeをいっぱい配置しておきましょう。(適当でOK)
WS000356

サンプルスクリプト


以下、スクリプトの記述例です。MainCameraに貼り付けてます。

Skill_01.cs

using UnityEngine;
using System.Collections;

public class Skill_01 : MonoBehaviour {

	void Update () {

		// 左クリックで実行
		if (Input.GetMouseButtonDown(0)) {

			// GameObject型の配列cubesに、"box"タグのついたオブジェクトをすべて格納
			GameObject[] cubes = GameObject.FindGameObjectsWithTag("box");

			// GameObject型の変数cubeに、cubesの中身を順番に取り出す。
			// foreachは配列の要素の数だけループします。
			foreach (GameObject cube in cubes) {
				// 消す!
				Destroy(cube);
			}
		}
	}
}
 

確認

シーンを再生して、マウスの左クリックをしてみましょう。
unity_skill_1
Cubeがすべて消えたら成功です。うまくいかない場合はタグ名などをよく確認してみましょう。

削除ではなくサイズを変えたり色を変えたりすることもできるため汎用性は高いです。
foreachの中で通常のオブジェクトを操作するのと同じように記述すれば大抵のことはできます。
※ただし、オブジェクトの数が多い場合は負荷も考えましょう。foreachが1フレームで動作していることをお忘れなく!

今月の新着記事

【Unity_C#】1~10の乱数を重複なしでサクッと取得するサンプル
【解けないとマズい練習問題】C# 練習問題 11

記事一覧にもどる

  • このエントリーをはてなブックマークに追加

PAGE TOP