概要
2017/9/7 に「Mulitple Tags」がリリースされました
「Mulitple Tags」を導入すると、
ゲームオブジェクトに複数のタブを設定できるようになります
検証環境
- Unity 2017.1.1f1
- Mulitple Tags 1.0
公式マニュアル
http://aiunity.com/products/multiple-tags/manual
コントロールパネル
Unity メニューの「Tools>AiUnity>MultipleTags>Control Panel」を選択すると
タグを管理するためのコントロールパネルを開くことができます
このコントロールパネルでタグの追加や設定、
スクリプトの更新を行うことができます
タグの追加
コントロールパネルで「Find tags」を開いて「Add」ボタンを押します
そして、「New tag(s)」の入力欄に追加するタグの名前を入力して「Ok」ボタンを押します
タグ名をスペースで区切ることで一度に複数のタグを追加できます
追加したタグはコントロールパネルで確認できます
ゲームオブジェクトにタグを設定
Scene ビューや Hierarchy でタグを設定したいゲームオブジェクトを選択すると
コントロールパネルに表示されます
そして、「+」ボタンを押すことでタグを設定することができます
このようにタグを複数設定することが可能です
設定したタグは Inspector でも確認可能です
スクリプトの更新
using AiUnity.Common.Attributes; using System.Collections.Generic; using AiUnity.Common.Tags; /// <Summary> /// Provide strongly typed access to Unity tags. /// <Summary> public class TagAccess : ITagAccess { public const string Untagged = "Untagged"; public const string Respawn = "Respawn"; public const string Finish = "Finish"; public const string EditorOnly = "EditorOnly"; public const string MainCamera = "MainCamera"; public const string Player = "Player"; public const string GameController = "GameController"; public const string Blue = "Blue"; public const string Green = "Green"; public const string Red = "Red"; private static readonly List<string> tagPaths = new List<string>() { "Untagged", "Respawn", "Finish", "EditorOnly", "MainCamera", "Player", "GameController", "Green", "Red/Green/Blue" }; public IEnumerable<string> TagPaths { get { return tagPaths.AsReadOnly(); } } }
スクリプトからタグを使用してゲームオブジェクトを検索するために
上記のような、定数や配列でタグ名を管理するスクリプトを作成する必要があります
タグ名を管理するスクリプトは、コントロールパネルの「Options>TagAccess script」の
「Create」ボタンを押すことで作成可能です
作成したスクリプトは「Assets/AiUnity/UserData/MultipleTags」フォルダに
「TagAccess.cs」という名前で保存されます
API の使用例
using AiUnity.MultipleTags.Core; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var ts = TagService.Instance; // 指定されたタグを含むすべてのゲームオブジェクトの検索 var list1 = ts.FindGameObjectsWithTags( TagAccess.Red ); // 指定された条件を満たすすべてのゲームオブジェクトの検索 var list2 = ts.FindGameObjectsWithTags( "(Red | Green) & Blue" ); // 指定されたパターンマッチにヒットするすべてのゲームオブジェクトの検索 var list3 = ts.FindGameObjectsWithTags( "T.*" ); // 指定されたタグを含むすべての子オブジェクトの検索 var list4 = gameObject.FindGameObjectsWithTags( TagLogic.And, TagAccess.Red ); // 指定された条件を満たすかどうかの確認 var hasTags = gameObject.HasTags( TagLogic.Or, TagAccess.Red, TagAccess.Green ); // タグを追加 gameObject.AddTags( TagAccess.Blue ); } }