Unity - タグに関する操作まとめ
初めに
Unity の GameObject にはタグを割り当てることができます。本記事は、タグに関する操作をまとめます。
Index
タグ
新規タグの作成
新しいタグは次の手順で作成できます。
(新規タグの作成手順)
- Inspector の tag の部分をクリックし、Add Tag... をクリックします。
- Tag and Layer マネージャーが開いたら、"+" をクリックし、タグの名前を入力、Saveをクリックします。
ビルトインタグ
あらかじめ設定されているタグが6つあります。これらのタグは Tag and Layer マネージャーに表示されません。
- Untagged
- Respawn
- Finish
- EditorOnly
- MainCamera
- Player
- GameController
GameObject.tag
ゲームオブジェクトのタグ名を取得・変更できます。型は string です。
void Start() { //このゲームオブジェクトに "Player" タグを指定 gameObject.tag = "Player"; }
GameObject.CompareTag
ゲームオブジェクトのタグを判定するための関数です。
//ゲームオブジェクトのタグが引数で指定したものと一致したら true, 一致しなかったらfalse public bool CompareTag (string tag);
(例)
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void OnTriggerEnter(Collider other) //接触したオブジェクトの Collider が other とする { if (other.gameObject.CompareTag("Player")) //otherのタグが"Player"だったら { Destroy(other.gameObject); //otherのオブジェクトを削除 } } }
GameObject.FindWithTag
引数で指定したタグがタグ付けされたアクティブなゲームオブジェクトのうち、最初に見つかったものを返します。もし見つからない場合は null を返します。
public static GameObject FindWithTag (string tag);
(例)
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public GameObject respawnPrefab; public GameObject respawn; void Start() { if (respawn == null) //respawnがnullだったら respawn = GameObject.FindWithTag("Respawn"); //"Respawn"タグが割り当てられているゲームオブジェクトをrespawnに代入 Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation); } }
GameObject.FindGameObjectsWithTag
引数で指定したタグがタグ付けされたアクティブなゲームオブジェクトの配列を返します。もし見つからない場合は空の配列を返します。
public static GameObject[] FindGameObjectsWithTag (string tag);
(例)
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public GameObject respawnPrefab; public GameObject[] respawns; void Start() { if (respawns == null) respawns = GameObject.FindGameObjectsWithTag("Respawn"); //"Respawn"タグが割り当てられているゲームオブジェクトを配列で取得 foreach (GameObject respawn in respawns) { Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation); } } }