タグは、1 つまたは複数の ゲームオブジェクト に割り当てることができる参照ワードです。例えば、プレイヤーが制御するキャラクターには “Player” タグを、プレイヤーが制御しないキャラクターには “Enemy” タグを定義します。シーン内でプレイヤーが収集できるアイテムは “Collectable” タグを使って定義します。任意の単語をタグとして使用できます。短い句を使用することも可能です。ただし、その場合は、タグ全体を表示するために、Inspector の幅を広げる必要があるかもしれません。ゲームオブジェクトに割り当てることができるタグは 1 つだけです。
タグは、スクリプト作成のためにゲームオブジェクトを識別するのに役立ちます。タグにより、スクリプトの公開されたなプロパティにゲームオブジェクトをドラッグアンドドロップで手動で追加する必要がありません。それにより、複数のゲームオブジェクトで同じスクリプトコードを使用する場合に、時間を節約できます。
タグは、コライダー 制御スクリプトのトリガーに有用です。トリガーは、プレイヤーが何と相互作用しているのか (敵、小道具、アイテムなど) を判断する必要があるからです。
GameObject.FindWithTag 機能を使用して、指定したタグを含むゲームオブジェクトを検索できます。以下の例では、GameObject.FindWithTag() を使用しています。“Respawn” タグを持つゲームオブジェクトの場所で respawnPrefab をインスタンス化しています。
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
public GameObject respawnPrefab;
public GameObject respawn;
void Start() {
if (respawn == null)
respawn = GameObject.FindWithTag("Respawn");
Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation) as GameObject;
}
}
Inspector では、ゲームオブジェクトの名前の下に Tag と Layer のドロップダウンメニューがあります。
新しいタグを作成するには、Add Tag… を選択します。すると、Inspector で Tag and Layer マネージャー が開きます。いったんタグに名前を付けると、タグの名前を後で変更することはできません。
レイヤーはタグと似ていますが、シーン内でゲームオブジェクトをどのようにレンダリングするかを決めるために使用されます。詳細は、レイヤー のドキュメントを参照してください。
Inspector のゲームオブジェクトの名前のすぐ下に Tag と Layer のドロップダウンメニューがあります。ゲームオブジェクトに既存のタグを適用するには、Tags ドロップダウンを開いて適用するタグを選択します。すると、ゲームオブジェクトはこのタグに関連付けられます。
エディターには Tag マネージャーに表示されない以下のビルトインタグがあります。
MainCamera や EditorOnly などのビルトインタグには固有の機能があります。
エディターでは、MainCamera タグが付けられたゲームオブジェクトを内部的にキャッシュします。Camera.main にアクセスすると、エディターからキャッシュの最初の有効な結果が返されます。詳細については、Camera.main を参照してください。
シーン内の EditorOnly タグが付けられたゲームオブジェクトは、ゲームのビルド時に破棄されます。EditorOnly タグが付けられたゲームオブジェクトの子ゲームオブジェクトも、ゲームのビルド時に破棄されます。