Skip to main content
Unity Asset

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.

Available Now Unity 2022.3+ Editor + Runtime Full C# Source PlayMaker Actions Built-in · URP · HDRP

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:

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:

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.

ActionWhat it does
Add TagAdds a tag to a GameObject (adds the MultiTag component if missing). Dot-notation supported.
Remove TagRemoves a tag from a GameObject.
Has TagTests whether a GameObject has a tag (hierarchical or exact). Stores a Bool and sends True/False events.
Get TagsReads all of a GameObject's tags into a String array, plus a count.
Find First With TagFinds the first scene object with a tag → GameObject, with Found / Not Found events.
Find All With TagFinds all scene objects with a tag → GameObject array and count, with Found / Not Found events.
Any With TagFast existence check → Bool, with True/False events.
Count With TagCounts 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

Requirements & compatibility

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.