Unityでタグのついたオブジェクトをまとめて操作する方法
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
Unityでタグのついたオブジェクトをまとめて操作する方法
今回は、タグのついたブジェクトをまとめて操作する方法を解説します。
※この記事で使用しているUnityのバージョンは5.6です。
[Unity_317×90]
使用する関数
この関数を使用します。
GameObject.FindGameObjectsWithTag(”タグ”);
戻り値はGameObject型の配列です。
※似た関数で、GameObject.FindGameObjectWithTag(“タグ”); があるので注意。(Objectsのsがない)
こちらはオブジェクトが一個だけしか取得できません。
同じタグのついたオブジェクトが複数ある場合、意図したオブジェクトが取得できるとは限りません。
準備として、シーンに”box”というタグ(作成する)をつけたCubeをいっぱい配置しておきましょう。(適当でOK)
サンプルスクリプト
以下、スクリプトの記述例です。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); } } } }
確認
シーンを再生して、マウスの左クリックをしてみましょう。
Cubeがすべて消えたら成功です。うまくいかない場合はタグ名などをよく確認してみましょう。
削除ではなくサイズを変えたり色を変えたりすることもできるため汎用性は高いです。
foreachの中で通常のオブジェクトを操作するのと同じように記述すれば大抵のことはできます。
※ただし、オブジェクトの数が多い場合は負荷も考えましょう。foreachが1フレームで動作していることをお忘れなく!
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発