Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • 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 frostbind27 · Oct 02, 2017 at 09:28 PM · comparetag

How do I check if an object has a tag

I'm trying to make a selection system using tags on objects to identify if they can be selected or not. However, with my current code, it doesn't seem to be working

this is my script, if anyone knows what the problem is, please correct me; However, if There is a better way to do this, please tell me.

void Update() {

     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     //Ray from camera to mouse position
     RaycastHit HitInfo;
     //Hitinfo is being created to store info from objects hit by the ray
     if (Physics.Raycast(ray, out HitInfo))
     {
         IsObjectSelectable();

     }
     else return;
     

 }
 void SelectingCounters()
 {
     if (Selected == false)
     {
         Hovering += SelectionCounter;
         Debug.Log(Hovering);
     }
     else Hovering = 0;
     ObjectSelected += SelectionCounter;
     
 void ObjectSelector()
 {
     if (Hovering > 1)
     {
         Debug.Log("Selected!");
         Selected = true;
         Hovering = 0;
     }
     else if (ObjectSelected > 1)
     {
         Debug.Log("Deselected");
         Selected = false;
         ObjectSelected = 0;
     }
 }
 void WasButtonPressed()
 {
     if (Input.GetMouseButtonDown(0))
     {
         ObjectSelector();
     }
     else return; 
 }

void IsObjectSelectable() { Selectable = GameObject.FindWithTag("Selectable"); DoesObjectHaveTag();

 }

 private void DoesObjectHaveTag()
 {
     if (HitInfo.collider.gameObject.CompareTag("Selectable"))
     {
         HoverTimer();
         SelectingCounters();
         WasButtonPressed();
     }
     else return;
 }

 void HoverTimer()
 {
     if (Hovering > 500)
     {
         Debug.Log("HoverOver Message");
         Hovering = 2;
     }
 }
Comment
Add comment · Show 3
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 hexagonius · Oct 02, 2017 at 10:51 PM 0
Share

What does not work?

avatar image frostbind27 hexagonius · Oct 03, 2017 at 04:34 PM 0
Share

if (HitInfo.collider.gameObject.CompareTag("Selectable"))

avatar image fafase frostbind27 · Oct 03, 2017 at 05:07 PM 0
Share

Where is HitInfo declared? You are using it in the Update but it is a local variable declared in the Update. So the global one is most likely never assigned.

It seems your issue is not related to tag but null reference exception and variable scope.

2 Replies

· Add your reply
  • Sort: 
avatar image
1

Answer by YoucefB · Oct 03, 2017 at 05:17 PM

Probably HitInfo.collider.gameObject is returning a null reference , so you should check first if the gameObject is not null

  if (HitInfo.collider != null && HitInfo.collider.gameObject.CompareTag("Selectable"))
      {
     //...
      }



And if you want to know if an object has a tag use:

if(gameObject.tag != "Untagged")

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
0

Answer by Topthink · Oct 02, 2017 at 10:56 PM

Click on the object (in the scene, etc).

At the top of the inspector you will see a "Tag" field that initially is set to "Untagged".

You can change the tag of the object here to anything you want including adding a new custom tag of your own.

Good Luck.

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 frostbind27 · Oct 03, 2017 at 04:25 PM 0
Share

I did that, and I still get the error:

NullReferenceException: Object reference not set to an instance of an object $$anonymous$$ouseController.DoesObjectHaveTag() (at Assests/Scripts/$$anonymous$$ouseController.cs:79)

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.

Follow this Question

Answers Answers and Comments

72 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 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 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 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

Enemy wont react to bullets 2 Answers

OnTriggerEnter CompareTag not Working 1 Answer

Multiple object clicks in OnMouseDown script? 2 Answers

Kill object after time 1 Answer

Why wont my raycast compareTag properly? 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