【Unity】オブジェクト管理にはタグ(Tag)が便利。共通の制御を行うスクリプトに使えます。

2021年7月29日

どうも、だらはです。
今回はUnityに実装されているタグ(Tag)という機能について紹介したいと思います。
とても便利な機能なので、是非試してみてください!

スポンサーリンク

タグを使うメリット

ゲームオブジェクトが増えてくると、名前や階層だけでは管理が難しくなります。
その際に便利になるのがタグ(Tag)です。
タグを使うことで、名前や階層に依存することなく層別して管理することができます。

筆者
筆者
筆者は、全ての敵に対して共通の制御を行う場合などに使っています('ω’)

因みにですが、ゲームオブジェクトを検索する他の方法をまとめたので参照して頂けたらと思います。

タグの設定方法

ゲームオブジェクトのインスペクターからTagのプルダウンをクリック。
デフォルトでタグがいくつか準備されていますが、「Add Tag」から新規タグを登録できます。

スクリプトからタグ設定する場合は以下の通りです。

◆スクリプトからコード設定する方法

    void Start()
    {
        this.tag = "Enemy";
    }

タグの検索方法

では、実際にタグを使って検索してみます。
先ずは提供されるAPIの紹介から。
FindWithTag()メソッド、またはFindGameObjectWithTag()メソッドを使います。

public static GameObject FindWithTag(string tag);
public static GameObject FindGameObjectWithTag(string tag);

両者完全に同じです。引数にはtagの文字列を指定します。
タグが設定されている全てのオブジェクトを取得するには、FindGameObjectsWithTag()メソッドを使います。

public static GameObject[] FindGameObjectsWithTag(string tag);

「Enemy」タグのゲームオブジェクトを検索し、回転させるスクリプトを書いてみました。

◆RotateEnemy.cs

using UnityEngine;

public class RotateEnemy : MonoBehaviour
{
    private GameObject[] obj;

    void Start()
    {
        var tag = "Enemy";
        obj = GameObject.FindGameObjectsWithTag(tag);
    }

    void Update()
    {
        for (int i = 0; i < obj.Length; i++)
        {
            obj[i].transform.Rotate(0, 1, 0);
        }
    }
}

以上、だらはでした。
よろしければシェアお願いします。(*’▽’)

スポンサーリンク

基礎

Posted by daraha_gm