Multi Tag
Unlimited tags. Dot-notation hierarchy. Zero friction.Multi Tag brings a professional, Unreal-inspired tag system to Unity — letting you assign as many tags as you want to any GameObject and query them with a fast, expressive hierarchy. Great for RPGs and inventories, enemy/AI perception, interaction and trigger systems, faction logic, and ability targeting — anywhere objects need to belong to more than one category.
The problem with Unity's built-in tags
Unity's default tag system allows exactly one tag per GameObject, chosen from a fixed project-wide list. In any game with more than a handful of object types, this becomes a bottleneck: enemies that are also interactable, pickups that are also triggers, NPCs that belong to multiple factions. Developers work around this with layers, booleans, enums, and GetComponent chains — all of which scatter logic and slow iteration.
Multi Tag eliminates that workaround entirely. Attach one component, add as many tags as you need, and query them with a clean, hierarchical API.
Hierarchical dot-notation
Tags follow a dot-separated hierarchy inspired by Unreal Engine's Gameplay Tag system:
Character.Enemy.Boss
Interactable.Door
Pickup.Weapon.Sword
Audio.Ambient
A query for "Character" automatically matches Character.Enemy, Character.Enemy.Boss, and any other descendant — without you writing a single line of comparison logic. Narrow the query to "Character.Enemy" and you get only enemies, not allies or neutrals.
Fast global registry
MultiTagRegistry maintains a scene-wide dictionary of every tag in use. Lookups are:
- O(1) for exact tag queries
- O(k) for hierarchical queries (k = number of distinct tag strings — typically tiny)
No FindObjectsOfType, no GetComponent loops, no boxing. The registry registers and unregisters automatically as GameObjects are created and destroyed, and resets cleanly on domain reload.
Polished Inspector UI
Tags are displayed as styled chip / pill elements in the Inspector, with:
- Dot-segments rendered as
Character · Enemy · Bossfor instant readability - One-click × removal
- A text field with live autocomplete from your preset library
- A prompt offering to save new tags to the Tag Manager
Tag Manager window
Open Tools › MultiTag › Tag Manager to define a project-wide preset library. Presets appear as autocomplete suggestions in the Inspector and as dropdown options in [TagReference] fields. The window supports drag-to-reorder, Import from Scene, and Sort A→Z.
[TagReference] attribute
Decorate any string field with [TagReference] to get a dropdown tag picker in the Inspector — no custom editor code required. The dot-hierarchy is displayed as nested submenus.
[TagReference]
public string targetTag = "Character.Enemy";
Extension methods (API)
Query and mutate tags directly on any GameObject or Component with a fluent API:
gameObject.AddTag("Character.Enemy.Boss");
gameObject.HasTag("Character.Enemy"); // true — hierarchical
gameObject.HasAllTags("Character", "Interactable");
gameObject.HasAnyTag("Pickup.Weapon", "Pickup.Ammo");
List<GameObject> enemies = MultiTagRegistry.FindAllWithTag("Character.Enemy");
Because queries are hierarchical, HasTag("Character.Enemy") returns true for an object tagged Character.Enemy.Boss — you never have to enumerate subtypes by hand.
Multi-object editing
Select any number of GameObjects in the Hierarchy and edit their tags together. Tags shared by all selected objects appear as normal chips. Tags present on only some appear dimmed with a ~ prefix, so you can see at a glance what's shared and what's partial. Add or remove tags across the entire selection in one action, with full Undo support.
PlayMaker actions (optional)
As of v1.2.0, Multi Tag ships with eight optional PlayMaker custom actions for no-code tag workflows. They live in the PlayMaker/ folder and are guarded by the PLAYMAKER define, so they compile only when PlayMaker is installed — projects without it are completely unaffected. PlayMaker itself is not included or required. When present, the actions appear automatically in the PlayMaker Action Browser under the MultiTag category — no setup or assembly wiring.
| Action | What it does |
|---|---|
| Add Tag | Adds a tag to a GameObject (adds the MultiTag component if missing). Dot-notation supported. |
| Remove Tag | Removes a tag from a GameObject. |
| Has Tag | Tests whether a GameObject has a tag (hierarchical or exact). Stores a Bool and sends True/False events. |
| Get Tags | Reads all of a GameObject's tags into a String array, plus a count. |
| Find First With Tag | Finds the first scene object with a tag → GameObject, with Found / Not Found events. |
| Find All With Tag | Finds all scene objects with a tag → GameObject array and count, with Found / Not Found events. |
| Any With Tag | Fast existence check → Bool, with True/False events. |
| Count With Tag | Counts objects with a tag → Int (exact or hierarchical). |
The find, any, and count actions read from the global MultiTagRegistry, so they're fast scene-wide queries.
What's included
MultiTagcomponent — attach, add tags, doneMultiTagRegistry— global scene query systemMultiTagExtensions— fluent API on GameObject and ComponentTagReferenceAttribute+ custom PropertyDrawer- Custom Inspector with chip UI, autocomplete, and multi-object editing
- Tag Manager editor window
- Eight optional PlayMaker actions (compile only when PlayMaker is installed)
- Three importable samples (Basic Usage, Advanced Queries, Demo Scene)
- Editor tests (NUnit)
- Full PDF documentation
Requirements & compatibility
- Unity 2022.3 LTS or newer
- Works with all render pipelines (Built-in, URP, HDRP) — it's pure C# with no rendering dependencies
- No third-party dependencies; full C# source code included
- Editor and runtime; desktop, mobile, and console build targets
Pair it with Hierarchy Pro to organize your scene — tag objects with Multi Tag, then let Hierarchy Pro color and badge them by those tags for a hierarchy that reads at a glance. Want free browser utilities too? See our free game dev tools.
FAQ
Does this replace Unity's built-in tags?
No — Multi Tag works alongside Unity's existing tag field. Keep built-in tags where they make sense and use Multi Tag wherever you need more than one tag or a hierarchy.
Is the source code included?
Yes. The package ships with full C# source, three importable samples, NUnit editor tests, and complete PDF documentation.
How fast are tag queries?
Exact-tag lookups are O(1) through the global registry; hierarchical queries are O(k) where k is the number of distinct tag strings in the scene (typically very small). There are no FindObjectsOfType scans or per-object component lookups.
Where do I get help?
See the support page or email info@bliz.studio — full PDF documentation is also included inside the package.