Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 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 /
  • Help Room /
avatar image
1
Question by henryscott136 · Apr 02, 2017 at 05:27 PM · errorgameobjectgetcomponentreferenceinstance

Object reference; sometimes works but sometimes doesn't???

Hello Peeps, I'm no good at scripting so I could really do with some help. I have 2 scripts that I am using, one works fine and the other doesn't even though, as far as I'm aware, they are performing the same function.

The first script is a component of a box trigger that deactivates two other scripts that are on my player character and control his movement when the player enters that trigger. The player is then activated again on a button press:

 public KeyCode Deactivate;

 // Update is called once per frame
 void Update () {
     if (Input.GetKeyDown (Deactivate)) {
         Cursor.lockState = CursorLockMode.Locked;
         gameObject.SetActive (false);
         GameObject.Find ("Player").GetComponent<CharacterMover> ().enabled = true;
         GameObject.Find ("Player").GetComponent<CharacterTurner> ().enabled = true;

     }
         
 }

 void OnTriggerEnter(Collider other) {

     Cursor.lockState = CursorLockMode.Confined;

     if (other.CompareTag ("Player")) {

         GameObject.Find("Player").GetComponent<CharacterMover>().enabled = false;
         GameObject.Find("Player").GetComponent<CharacterTurner>().enabled = false;
     }
 }

}

That works fine, however another script that I want to activate a deactivated button on the same trigger scenario...:

 void OnTriggerEnter(Collider other) {
     
     if (other.CompareTag ("Player")) {
         
         GameObject.Find ("Test Button 1").gameObject.SetActive (true);
     }
 }

... gives me the following error:

NullReferenceException: Object reference not set to an instance of an object ButtonActivation.OnTriggerEnter (UnityEngine.Collider other) (at Assets/ButtonActivation.cs:17)

I know line 17 is 'GameObject.Find ("Test Button 1").gameObject.SetActive (true);' but I don't understand why i get an error, any help would be very much appreciated thanks!

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

2 Replies

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

Answer by AndreM1 · Apr 04, 2017 at 04:21 PM

Avoid using GameObject.Find(""), it causes performance issues, and only find ACTIVE objects, instead, use public variables that show in the inspector,

  GameObject.Find ("Test Button 1").gameObject.SetActive (true);

to:

  public GameObject testButton;

  void OnTriggerEnter(Collider other) {
      
      if (other.CompareTag ("Player")) {
          
          testButton.SetActive (true);
      }
  }

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 henryscott136 · Apr 05, 2017 at 08:06 PM

You absolute legend thanks for the help and the tips!!! I wonder why GameObject.Find causes performance issues? @AndreM1

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 AndreM1 · Apr 05, 2017 at 08:22 PM 0
Share

Because it cycles trough ALL objects comparing their names, until it find what you're searching. It doesn't cause much problems in small scenes, but when you have 100+ gameobjects, it already starts lagging :)

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

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

c# Object reference not set to an instance of an object 1 Answer

Reference a script on a gameobject that is disabled in scene 0 Answers

how do I add link script to gameobject that already exist with attached script 1 Answer

Difficulty setting script on gameObject from another script. 0 Answers

Access gameobject from a different scene... 1 Answer


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