• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by purdyjo · Oct 02, 2013 at 09:53 PM · gameobjecttagsefficiencyfindgameobjectswithtag

How does FindGameObjectsWithTag work?

I was just curious if anyone knew specifically how GameObject.FindGameObjectsWithTag worked.

Is there some sort of dictionary that these tags and gameobjects and whatnot are a part of?

or is it the equivalent to

 foreach(GameObject go in FindObjectsOfType(typeof(GameObject)))
 {
     if(go.tag == "butts")
     {
         return go;
     }
 }

I was just curious about how efficient it is to use if you are trying to grab a group of objects with the same tag

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

3 Replies

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by aldonaletto · Oct 03, 2013 at 04:12 AM

Apparently, the tag is internally stored in the GameObject as an integer, probably the index of the actual tag name in the tag table - that's why you must register a tag before using it. Since GameObject.tag is a property, its getter function returns the corresponding string stored in the tag table. I don't know if there exists some additional mapping to speed up tag search, but comparing integers is way faster than comparing strings, what makes FindWithTag faster than Find("tagName").

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
1

Answer by TrickyHandz · Oct 03, 2013 at 03:20 AM

All of the Find functions for GameObjects [Find(), FindGameObjectsWithTag(), FindWithTag()] are notoriously inefficient. At one of the Unite 13 talks one of the programmers at Unity stated that you shouldn't use these unless absolutely necessary. The recommendation I have heard most often is to register gameobjects to into a custom data structure that is easily and efficiently traversable.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
1

Answer by r-dotfunky · Oct 03, 2013 at 03:49 AM

To answer your question though, when you select an item in your scene heirarchy, on the right side (assuming std Unity setup), you'll see at the top a "Tag" menu. You can add custom tags to that, then assign your objects to the tag.

The FindGameObjectsWithTag function should return an array of GameObjects.

http://docs.unity3d.com/Documentation/ScriptReference/GameObject.FindGameObjectsWithTag.html

[code] GameObject[] gos; gos = GameObject.FindGameObjectsWithTag("Enemy"); [/code]

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Ziplock9000 · Jul 16, 2019 at 06:50 PM 0
Share

That wasn't the question.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

19 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to find one object in specific layer? 1 Answer

Best method to manage multiple tags 2 Answers

HELP Find gameObject With tag in another array 1 Answer

Destroying Multiple Objects with Tags 1 Answer

Destroy all gameObjects with tag in one line 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges