Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 CosgunHalil · Jul 19, 2013 at 12:09 PM · nullreferenceexception

NullReferenceException: Object reference not set to an instance of an object

I have two scripts. The first script BallControl is attached on a GameObject. The Second script Hero is attached on other GameObject. When I try to passing value Hero to BallControl, I receive an error message : "NullReferenceException: Object reference not set to an instance of an object" How can I solve this problem or how can I pass value script attached on an object to other script attached on an other object? Thanks for your time.

 using UnityEngine;
 using System.Collections;
 
 public class BallControl : MonoBehaviour {
 
     public int life = 0;
     public GameObject hero;
     
     void Update () {
         
         Hero obj = GetComponent<Hero>();
         life = obj.lifeBall; 
         if(life==20){
             print("GameOver");
         }    
     }
 }



 using UnityEngine;
 using System.Collections;
 
 public class Hero : MonoBehaviour {
     
     public int lifeBall = 0;
     public GameObject ball;
 
     void Update () {
         lifeBall++;
     }
     
 }
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

Answer by henrypuspurs · Jul 19, 2013 at 12:41 PM

I had this recently, try defining the exact Object the script you are referencing is on.

     private GameObject player;
     private Crosshair looking;
      
     void Awake()
         {
         GameObject player = GameObject.Find("Player/Camera");
         looking = player.GetComponent<Crosshair>();
         }

Im too new to coding to tell you exactly what to do but in this example the script finds the Object called Camera under the Player parent, and makes that the player referenced in the script, then player.GetComponent fetches the Crosshair script (which in my case accesses a boolean statement to be used.

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 PAEvenson · Jul 19, 2013 at 12:36 PM

You kind of had the right idea...But this line here wont help you:

  Hero obj = GetComponent<Hero>();

GetComponent will return the component if it is on that gameObject. You would need both scripts on the same object.

Here is what you should do:

 using UnityEngine;
 using System.Collections;
  
 public class BallControl : MonoBehaviour {
  
     public int life = 0;
     public GameObject hero; //assign this in the inspector(in the unity editor)
  
     void Update () {
  
  
        life = hero.lifeBall; 
        if(life==20){
          print("GameOver");
        } 
     }
 }
  
  
  
 using UnityEngine;
 using System.Collections;
  
 public class Hero : MonoBehaviour {
  
     public int lifeBall = 0;
     public GameObject ball; //assign this in the inspector(in the unity editor)
  
     void Update () {
        lifeBall++;
     }
  
 }



Assign the gameObject inside the editor so you then have a reference to it. Once you obtain the reference you can then access its members and properties. Another way of finding the object is this:

 Hero obj = GameObject.Find("[name of Hero GameObject]").GetComponent<Hero>();
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

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

17 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

Related Questions

Beginner having trouble with NullReferenceException 2 Answers

Name-fetching script working but with error. 1 Answer

Null reference exception on Screenpointtoray (Multiplayer) 1 Answer

Need Help With a NullReference Exception 2 Answers

NullReferenceException 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