【Unityで学ぶC#プログラミング⑩】タグとは

プログラミング初心者向けのUnityで学ぶC#講座。
初心者にもわかりやすく、なるべく専門的な用語をなくして簡単に説明します。
今回は「タグ」について解説いたします。
この記事を読むと以下の事が分かるようになります。
タグとは
タグのついたゲームオブジェクトの探し方
タグを理解する事はUnityゲーム開発で非常に便利です。
ぜひ理解してどんどん活用してください。それではさっそく説明していきます。
もくじ
タグとは
タグはインスペクターの上部に確認でき、デフォルトではUntaggedになっています。

いったいこのタグを使うのが何で便利なのかというと、タグを使うとオブジェクトをグループにまとめて一括で操作できるようになります。
たとえば、フィールド上の敵を一括で削除したい、
特定のアイテムを見つけたい、
当たり判定で、味方の攻撃はダメージをもらわないようにする
などの時に使えます。
タグの追加方法
Untaggedをクリックするとプルダウンでタグのリストが表示されます。
デフォルトでPlayerやGamecontrollerなどのタグが用意されており、タグを追加したい場合はAdd Tagで追加できます。

今回のゲームオブジェクトは”enemy”のタグを追加し、設定しています。
実際にタグが有効かどうか確認するために、下記のスクリプトを用意しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class testTag : MonoBehaviour { // Start is called before the first frame update void Start() { if(this.gameObject.tag == "enemy") { Debug.Log("敵オブジェクト"); } } // Update is called once per frame void Update() { } } |
アタッチされたゲームオブジェクトに”enemy”のタグが設定されていれば、コンソールに”敵オブジェクト”の文字が表示されます。

コンソールに”敵オブジェクト”の文字が表示されました。
また、タグをUntaggedのもどして実行すると、コンソールには文字が表示されません。
それでは次にタグのついたオブジェクトを探してみましょう。
タグのついたゲームオブジェクトの探し方
タグのついた1つのオブジェクトを探す
下記はシーンにある”enemy”オブジェクト探して削除するスクリプトです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class testFindWithTag : MonoBehaviour { GameObject obj;//データ型GameObjectの変数objを宣言 // Start is called before the first frame update void Start() { obj = GameObject.FindWithTag("enemy");//"enemy"タグのついたオブジェクトを見つけて変数に代入 Destroy(obj);//オブジェクトを削除 } // Update is called once per frame void Update() { } } |
シーンには複数のオブジェクトを配置、オブジェクトの1つだけが”enemy”タグを持ちます。
それではプレイをおして確認してみましょう。
1つのenemyタグがあるオブジェクトが削除されました。
タグのついた複数のオブジェクトを探す
“enemy”タグを持つオブジェクトがシーンに1つしかない場合は、さきほどのスクリプトでも大丈夫ですが、複数のオブジェクトを扱いたい場合もありますよね。
その場合は下記のスクリプトで複数のオブジェクトが探せます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class testFindWithTagMul : MonoBehaviour { GameObject []obj;//データ型GameObjectの配列objを宣言 // Start is called before the first frame update void Start() { obj = GameObject.FindGameObjectsWithTag("enemy");//タグのついたオブジェクトを探して配列に格納 foreach(GameObject i in obj) { Destroy(i.gameObject);//配列に格納されたオブジェクトを削除 } } // Update is called once per frame void Update() { } } |
複数オブジェクトを扱うため、見つけたオブジェクトを配列で格納しています。
配列について詳しく知りたい方は【Unityで学ぶC#プログラミング⑥】配列とはもご覧ください。
今回はシーンにある3Dオブジェクトすべてが”enemy”タグを持ちます
それでは実行してみましょう。
“enemy”タグを持つ全てのオブジェクトが削除されました。
今回のところは以上となります。
最後まで読んでいただきありがとうございました。
おすすめ記事【現役Unityエンジニアが厳選】Unityを学ぶのにおすすめのプログラミングスクール3選
おすすめのUnityスクール
Unityが学べるおすすめのプログラミングスクールはTECH STUDIAMになります。
理由はゲーム開発に特化したプログラミングスクールであり、2ヶ月で9万円の授業料で他のプログラミングスクールに比べても安いからです。
興味のある方は、無料相談してみるのをオススメます。
ゲーム制作を学べるオンラインスクール TECH STUDIAM