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 TheDividedSegment · Feb 15, 2014 at 09:04 PM · script errorclick objects

Object reference not set to an instance of an object

I am trying to reference a script but it keeps giving me this error. This is the code

 var AttackCombo : AttackCombo;
 function Awake ()
 {
 AttackCombo.Test();

and this is the script i'm trying to reference

 public var attackTime : float[]; // store each length of each attack in order (in the inspector)
 //public var attackAnimations : AnimationClip[]; // store a reference to the animations, then use the same index 'attackType'
  
 public var waitTime : float = 10; // how long player has to hit LMB after last attack has finished
  
 private var attackTimer : float = 0.0; // timer variable
 private var attackType : int = -1; // reference to what attack the combo is up to (-1 is none, 0+ is the array index for attackTime )
 //private var attack
  
 enum attack { Idle, Attacking, Waiting } // different states while the combo inputs are being checked
 var attackState : attack; // current attack input state (public for viewing in the Inspector)
 var test : int = 0;
  
 var totalChainedHits : int = 0; // total Chained Hits without missing a LMB press (public for viewing in the Inspector)
  
  
 function Start() 
 {
     // set defaults
     attackType = -1;
     attackState = attack.Idle;
     // tell animation to play Idle
     totalChainedHits = 0;
  
     // You could set up the attackTime array here (and make it private)
     
     attackTime = new float[3];
     attackTime[0] = 0.5;
     attackTime[1] = 0.5;
     attackTime[2] = 0.5;
     
 }
 
 function Test () {
     test++;
 }
  
 function Update() 
 {
     CheckForPlayerAttackInput();
 }
  
 function CheckForPlayerAttackInput() 
 {
     switch( attackState ) // what state is the combo in
     {
        case attack.Idle :
          if ( Input.GetMouseButtonDown(0) ) // start attacking
          {
              animation.CrossFade("Attack");
              attackType = 0;
              attackState = attack.Attacking;
              attackTimer = attackTime[0];
              // tell animation to play attack 0 (first attack)
              totalChainedHits = 1;
          }
        break;
  
        case attack.Attacking :
          attackTimer -= Time.deltaTime; // wait for attackTimer
  
          if ( attackTimer < 0 )
          {
              attackTimer = waitTime;
              attackState = attack.Waiting;
          }
  
          /* // uncomment this to break the combo while attacking
          if ( Input.GetMouseButtonDown(0) ) // break attack
          {
              attackType = -1;
              attackState = attack.Idle;
              // tell animation to play Idle
          }
          */
        break;
  
        case attack.Waiting :
          attackTimer -= Time.deltaTime; // check the Waiting Timer (attackTimer)
  
          if ( attackTimer < 0 ) // ran out of time to chain combo
          {
              attackType = -1;
              attackState = attack.Idle;
           //   animation.CrossFade("Idle");
              // tell animation to play Idle
          }
  
          if ( Input.GetMouseButtonDown(0) ) // continue attacking
          {
       //   animation.CrossFade("Attack1");
           attackType ++; // go to next attack
  
           if ( attackType >= attackTime.Length ) // check if the combo is over, start a new combo
           {
               attackType = 0;
               attackState = attack.Attacking;
               attackTimer = attackTime[0];
               // tell animation to play attack 0 (first attack)
                animation.CrossFade("Attack");
               totalChainedHits ++;
           }
           else
           {
               attackState = attack.Attacking;
               attackTimer = attackTime[ attackType ];
               animation.CrossFade("Combo");
               // tell animation to play attack 'attackType' (next attack in array)
               totalChainedHits ++;
           }
          }
        break;
     }
 }
  
 // example GUI for testing this script
 function OnGUI() 
 {
     GUI.Box( Rect( 10, 10, 100, 25 ), "Hit " + attackType.ToString() );
     GUI.Box( Rect( 10, 60, 100, 25 ), "Hit " + test.ToString() );
     GUI.Box( Rect( (Screen.width * 0.5) - 50, 10, 100, 25 ), "" + attackState.ToString() );
     GUI.Box( Rect( Screen.width - 110, 10, 100, 25 ), "Total " + totalChainedHits.ToString() );
     GUI.Box( Rect( (Screen.width * 0.5) - 50, 45, 100, 25 ), "" + attackTimer.ToString() );
 }
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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by getyour411 · Feb 15, 2014 at 09:06 PM

http://unity3d.com/learn/tutorials/modules/beginner/scripting/getcomponent

Comment
Add comment · Show 7 · 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 TheDividedSegment · Feb 15, 2014 at 09:54 PM 0
Share

Ok, I tried that and then I got this error

 The name 'AttackCombo' does not denote a valid type ('not found'). Did you mean 'UnityEngine.AddComponent$$anonymous$$enu'?
 
avatar image getyour411 · Feb 15, 2014 at 09:57 PM 0
Share

You tried...what? Show

avatar image TheDividedSegment · Feb 15, 2014 at 10:26 PM 0
Share

I've added this

 private var attackCombo : AttackCombo;

and this

 function Awake ()
 {
 attackCombo = GetComponent(AttackCombo);
 }

and this

 function Start () {
 attackCombo.Test();
 }

and this is my test function in attackCombo

 function Test () {
 Debug.Log("Test Recieved");
 }


avatar image getyour411 TheDividedSegment · Feb 15, 2014 at 10:28 PM 0
Share

Please don't post follow-ups as Answers, I converted this one for you. This is looking much better, nearly there. Is your script actually called AttackCombo and it attached to the same GameObject as the 1st script that's trying to reference it?

avatar image TheDividedSegment · Feb 15, 2014 at 10:32 PM 0
Share

The actual script is attackCombo and yes, it is attached to the same GameObject as the script that is trying to reference it

avatar image getyour411 · Feb 15, 2014 at 10:40 PM 0
Share

Not to be nitpicky but since Computers are... is the script named AttackCombo or attackCombo? If it's lowercase, you need to change things a bit (as a standard, not required, Classes/Scripts are often Uppercase and the variable assigned to hold the reference is usually lowercase). Sounds like you might have it the other way around?

Show more comments

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

18 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

Related Questions

NullReferenceException: Object reference not set to an instance of an object HELP 1 Answer

renderer.material.color = Color.red; does not work 1 Answer

C# disable 2 diffirent scripts OnTriggerEnter 1 Answer

Unity hides filename in stacktrace 0 Answers

Click on two objects to render third 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