使用環境
・Unity Editor:2021.3.18f1
この記事でわかること
- TagとLayerの基本的な違いと役割
- Tag・Layerの設定手順
- CompareTagやLayerMaskの使い方
- 衝突や描画の制御におけるベストプラクティス
UnityでTag・Layerを活用するには?
ピッグダディ
タグ(Tag)はオブジェクトの種類を識別するため、レイヤー(Layer)は衝突や描画を制御するために使うんだ。
Unityでゲームを作るときには欠かせない機能だよ!
ピッグボーイ
敵とプレイヤーの処理を分けたいんですけど、
タグとか使うって聞きました!
ピッグガール
私はカメラにUIだけ映したくて、
レイヤーをどう使うか調べてたところ!
ピッグダディ
いいね。タグとレイヤーを正しく使えば、オブジェクトの管理も衝突処理もグッと楽になるよ。この記事では、基本からスクリプトでの使い方、描画や当たり判定の最適化まで、わかりやすく解説していくよ!
タグ(Tag)の使い方とスクリプト操作
タグ(Tag)とは?
オブジェクトに名前を付けてグループ化・識別できる機能です。 スクリプトから CompareTag(“タグ名”) を使って簡単に判定できます。
タグ(Tag)の使い方
- オブジェクトを選択(Hierarchy)
- InspectorでTagドロップダウンを開く
- 既存のタグを選ぶ or 「Add Tag…」で新規作成

タグ(Tag)のスクリプト判定(オブジェクトの識別判定)
//プレイヤーに当たったらダメージを与える
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log("プレイヤーがダメージを受けた!");
}
}
※ 当たり判定については以下のサイトを参考にしてください。
レイヤー(Layer)の使い方と最適化
レイヤー(Layer)とは?
物理演算(衝突)やカメラ描画など、オブジェクト同士の関係性を制御するためのカテゴリ分けです。 最大32個まで定義可能で、主にパフォーマンスと制御性向上に使われます。
レイヤー(Layer)の使い方
- Hierarchyでオブジェクトを選択
- InspectorのLayerのドロップダウンを開く
- 既存のLayerを選択 or 「Add Layer…」で新規作成

レイヤー(Layer)の実践例
LayerMaskを使って特定のレイヤーとだけ衝突判定
特定のレイヤーのオブジェクトだけを検出
public LayerMask enemyLayer;
void Update()
{
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, 10f, enemyLayer))
{
Debug.Log("敵を発見!");
}
}
CullingMaskでカメラに映すレイヤーを制限
void Start()
{
int uiLayer = LayerMask.NameToLayer("UI");
if (Camera.main != null && uiLayer != -1)
{
Camera.main.cullingMask = ~(1 << uiLayer); // UIだけ非表示にする
}
}
※ Cameraについては以下のサイトを参考にしてください。
タグ(Tag)とレイヤー(Layer)の違い
機能 | タグ(Tag) | レイヤー(Layer) |
---|---|---|
主な用途 | オブジェクト識別 | 衝突判定・描画制御 |
判定方法 | CompareTag(“タグ名”) | gameObject.layer、LayerMask など |
数量制限 | 制限なし | 最大32個 |
衝突制御 | 不可 | 可(Physics設定・LayerMask) |
描画制御 | 不可 | 可(CameraのCulling Mask) |
まとめ
・タグ(Tag)はオブジェクトを識別して処理を分けるために使う
・レイヤー(Layer)は衝突や描画の制御を効率化し、パフォーマンスを最適化するために使う
・CompareTagやLayerMaskを使えば、スクリプトから柔軟に制御可能
・カメラのCulling Maskや物理レイヤー設定と組み合わせて使うとさらに便利
タグ(Tag)とレイヤー(Layer)の使い方をマスターして、プロジェクトの構造をもっと整理・効率化しよう!