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 /
This question was closed May 23, 2014 at 06:27 AM by Fattie for the following reason:

The question is answered, right answer was accepted

avatar image
0
Question by Masamune · May 22, 2014 at 10:19 PM · nullreferenceexceptionaugmented-reality

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

Hey Guys, I get this error when I pull my scripts in and after hours of trawling the forums I can't find the solution. Hopefully you can help.

The errors occurs on 1 and 2.

 private var Target1 : Transform;
 private var Target1Script : BattleIvysaur = Target1.GetComponent(BattleIvysaur);

Full Script is Below, sorry it's long but I didn't know how much info you'd need

 private var Target1 : Transform;
 private var Target1Script : BattleIvysaur = Target1.GetComponent(BattleIvysaur);
 private var Target2 : Transform;
 private var Target2Script : Battle = Target2.GetComponent(Battle);
 private var Target3 : Transform;
 private var Target3Script : Battle = Target3.GetComponent(Battle);
 private var Target4 : Transform;
 private var Target4Script : Battle = Target4.GetComponent(Battle);
 private var Target5 : Transform;
 private var Target5Script : Battle = Target5.GetComponent(Battle);
 private var Target6 : Transform;
 private var Target6Script : Battle = Target6.GetComponent(Battle);
 private var Target7 : Transform;
 private var Target7Script : Battle = Target7.GetComponent(Battle);
 private var Health = 100;
 static var Damage = 10;
 static var MyName = "Wartortle";
 private var attackRepeatTime = 1;
 static var Pokelement = "WATER";
 private var AttackRange = 300;
 private var attackTime = 1;
 
 function UPDATE()
 {
     var Distance = 0;
     Distance = GetLow();
     if(Distance < AttackRange)
     {
         if(Time.time > attackTime)
         {
             var DamageMultiplyer = 1;
             var OpPokElement = "";
             switch (Distance)
             {
                  case Vector3.Distance(Target1.position, transform.position):
                      OpPokElement = Target1Script.Pokelement;
                     if(OpPokElement == "GRASS")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if(OpPokElement == "WATER")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if (OpPokElement == "FIRE")
                     {
                         DamageMultiplyer = 2;
                     }
                     else 
                     {
                         DamageMultiplyer = 1;
                     }
                     Target1.SendMessage("TakeDamage", Damage*DamageMultiplyer);
                     attackTime = Time.time + attackRepeatTime;
                     Debug.Log(MyName+" hit "+Target1Script.MyName+" for "+(Damage*DamageMultiplyer)+" Damage!!");
                     break;
                 case Vector3.Distance(Target2.position, transform.position):
                     OpPokElement = Target2Script.Pokelement;
                     if(OpPokElement == "GRASS")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if(OpPokElement == "WATER")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if (OpPokElement == "FIRE")
                     {
                         DamageMultiplyer = 2;
                     }
                     else 
                     {
                         DamageMultiplyer = 1;
                     }
                     Target2.SendMessage("TakeDamage", Damage*DamageMultiplyer);
                     attackTime = Time.time + attackRepeatTime;
                     Debug.Log(MyName+" hit "+Target2Script.MyName+" for "+(Damage*DamageMultiplyer)+" Damage!!");
                     break;
                 case Vector3.Distance(Target3.position, transform.position):
                     OpPokElement = Target1Script.Pokelement;
                     if(OpPokElement == "GRASS")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if(OpPokElement == "WATER")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if (OpPokElement == "FIRE")
                     {
                         DamageMultiplyer = 2;
                     }
                     else 
                     {
                         DamageMultiplyer = 1;
                     }
                     Target3.SendMessage("TakeDamage", Damage*DamageMultiplyer);
                     attackTime = Time.time + attackRepeatTime;
                     Debug.Log(MyName+" hit "+Target3Script.MyName+" for "+(Damage*DamageMultiplyer)+" Damage!!");
                     break;
                 case Vector3.Distance(Target4.position, transform.position):
                     OpPokElement = Target1Script.Pokelement;
                     if(OpPokElement == "GRASS")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if(OpPokElement == "WATER")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if (OpPokElement == "FIRE")
                     {
                         DamageMultiplyer = 2;
                     }
                     else 
                     {
                         DamageMultiplyer = 1;
                     }
                     Target4.SendMessage("TakeDamage", Damage*DamageMultiplyer);
                     attackTime = Time.time + attackRepeatTime;
                     Debug.Log(MyName+" hit "+Target4Script.MyName+" for "+(Damage*DamageMultiplyer)+" Damage!!");
                     break;
                 case Vector3.Distance(Target5.position, transform.position):
                     OpPokElement = Target5Script.Pokelement;
                     if(OpPokElement == "GRASS")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if(OpPokElement == "WATER")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if (OpPokElement == "FIRE")
                     {
                         DamageMultiplyer = 2;
                     }
                     else 
                     {
                         DamageMultiplyer = 1;
                     }
                     Target5.SendMessage("TakeDamage", Damage*DamageMultiplyer);
                     attackTime = Time.time + attackRepeatTime;
                     Debug.Log(MyName+" hit "+Target5Script.MyName+" for "+(Damage*DamageMultiplyer)+" Damage!!");
                     break;
                 case Vector3.Distance(Target6.position, transform.position):
                     OpPokElement = Target6Script.Pokelement;
                     if(OpPokElement == "GRASS")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if(OpPokElement == "WATER")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if (OpPokElement == "FIRE")
                     {
                         DamageMultiplyer = 2;
                     }
                     else 
                     {
                         DamageMultiplyer = 1;
                     }
                     Target6.SendMessage("TakeDamage", Damage*DamageMultiplyer);
                     attackTime = Time.time + attackRepeatTime;
                     Debug.Log(MyName+" hit "+Target6Script.MyName+" for "+(Damage*DamageMultiplyer)+" Damage!!");
                     break;
                 case Vector3.Distance(Target7.position, transform.position):
                     OpPokElement = Target7Script.Pokelement;
                     if(OpPokElement == "GRASS")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if(OpPokElement == "WATER")
                     {
                         DamageMultiplyer = 0.5;
                     }
                     else if (OpPokElement == "FIRE")
                     {
                         DamageMultiplyer = 2;
                     }
                     else 
                     {
                         DamageMultiplyer = 1;
                     }
                     Target7.SendMessage("TakeDamage", Damage*DamageMultiplyer);
                     attackTime = Time.time + attackRepeatTime;
                     Debug.Log(MyName+" hit "+Target7Script.MyName+" for "+(Damage*DamageMultiplyer)+" Damage!!");
                     break;
                 default:
                     break;
             }
         }
     }
 }
 
 function TakeDamage(deeps : int)
 {
     Health = Health-deeps;
 }
 
 function GetLow()
 {
     var Distance = Vector3.Distance(Target1.position, transform.position);
     var ThierName = "";
     if (Vector3.Distance(Target2.position, transform.position)>Distance) 
     {
         Distance = Vector3.Distance(Target2.position, transform.position);
     }
     if (Vector3.Distance(Target3.position, transform.position)>Distance) 
     {
         Distance = Vector3.Distance(Target3.position, transform.position);
     }
     if (Vector3.Distance(Target4.position, transform.position)>Distance) 
     {
         Distance = Vector3.Distance(Target4.position, transform.position);
     }
     if (Vector3.Distance(Target5.position, transform.position)>Distance) 
     {
         Distance = Vector3.Distance(Target5.position, transform.position);
     }
     if (Vector3.Distance(Target6.position, transform.position)>Distance) 
     {
         Distance = Vector3.Distance(Target6.position, transform.position);
     }
     if (Vector3.Distance(Target7.position, transform.position)>Distance) 
     {
         Distance = Vector3.Distance(Target7.position, transform.position);
     }
     return Distance;
 }
 
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

  • Sort: 
avatar image
0
Best Answer

Answer by Jeff-Kesselman · May 22, 2014 at 10:27 PM

According to the first two lines you showed us, you declare Target1 as a variable of type Transform but never set it to anything.

Then you try to reference it in the next line.

Thats your problem right there. I would guess you were expecting to set it in the editor, but thats too late. It needs a value as soon as the second variable is declared.

The simplest solution is not to use an initializer with the second variable. Instead, set it in your Start routine so it doesn't try to do it until you run the scene.

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 rutter · May 22, 2014 at 10:30 PM

Target1 needs to be set before you can call Target1.GetComponent(...).

You've declared a variable, but you haven't yet given it a value.

Notice the subtle distinction between the following:

  • Robot Assistant, open the mail in my personal box.

  • Robot Assistant, check to see if there's mail in my personal box. If you find any, open it.

To a person, the second instructions might sound equivalent and pedantic. To a computer, the second instructions are profoundly different and much more thorough.

Computers are incredibly specific; most programs will not check if an operation is safe unless you tell them to!

So! You have two options:

  • Always make sure that Target1 has a value. You could make it public, then set it in the inspector.

  • Always check that Target1 is not null before accessing it.

In your specific case, the first option probably involves less extra code. In the long run, the second option is usually good practice.

After that, I would recommend moving those GetComponent calls into an Awake or Start function that will be called once the game starts; it's much easier to control the order of operations and avoid unusual errors, that way.

Finally, you might check into tutorials for arrays and loops. They're a bit intimidating at first, but they make code like this a lot easier to manage.

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 Masamune · May 22, 2014 at 10:51 PM

Thank you both, got it sorted now, can't believe I missed that XD

Really appreciate the help, Ross

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

Follow this Question

Answers Answers and Comments

22 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

Related Questions

Multiple Cars not working 1 Answer

Help with NullReferenceException 1 Answer

NullReferenceExeption: Object reference not set to an instance of an object. 1 Answer

A node in a childnode? 1 Answer

2D game Player walks trough walls 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