Tips

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

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

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


今回は、タグのついたブジェクトをまとめて操作する方法を解説します。
※この記事で使用しているUnityのバージョンは5.6です。
[Unity_317×90]

使用する関数


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

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

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

サンプルスクリプト


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

Skill_01.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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ゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search