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 /
  • Help Room /
avatar image
0
Question by Mini-Pao · Mar 30, 2016 at 05:16 AM · animationunity 5nullreferenceexceptionanimator controller

NullReference on updating animator parameter

Im current new to Unity making my first 2D game,so please bear with me. The parameter playerCurrentBalloons on AnimatorController.cs is supposed to update everytime the OnTriggerEnter2D is triggered. But when it is triggered it gives me a NullReferenceError on this line.

 anim.UpdateBalloonCount (playerCurrentBalloons);

I am sure the variable is not null cause i tried printing on the console. The animator component is on a child component. I tried changing getComponent to getComponentInChildren but the error still appears.

this is the error message

NullReferenceException: Object reference not set to an instance of an object PlayerBalloons.BalloonPopped (Single damage) (at Assets/PlayerBalloons.cs:23) EnemyDamage.OnTriggerEnter2D (UnityEngine.Collider2D other) (at Assets/EnemyDamage.cs:21)

Here is the script where the error appears

 using UnityEngine;
 using System.Collections;
 
 public class PlayerBalloons : MonoBehaviour {
 
     public float playerMaxBalloons;
     float playerCurrentBalloons;
     AnimatorController anim;
     void Start () {
         playerCurrentBalloons = playerMaxBalloons;
         anim = AnimatorController.instance;
     }
     
     // Update is called once per frame
     void Update () {
 
     
     }
 
     public void BalloonPopped(float damage){
         playerCurrentBalloons -= damage;
         Debug.Log (playerCurrentBalloons);
         anim.UpdateBalloonCount (playerCurrentBalloons);
 
     }
 
 }
 

and here is the AnimatorController script

     using UnityEngine;
 using System.Collections;
 
 public class AnimatorController : MonoBehaviour {
 
     public static AnimatorController instance;
     Transform myTrans;
     Animator myAnim;
     Vector3 artScaleCache;
 
     void Start () {
         instance = this;
         myTrans = this.transform;
         myAnim = this.gameObject.GetComponent<Animator>();
         artScaleCache = myTrans.localScale;
 
     }
     
     void FlipArt(float currentSpeed){
         if ((currentSpeed < 0 && artScaleCache.x==1)|| //going left and facing right
             (currentSpeed > 0 && artScaleCache.x==-1)) // going right and facing left
         {
             artScaleCache.x *=-1;
             myTrans.localScale = artScaleCache;
 
         }
 
     }
 
     public void UpdateSpeed (float currentSpeed) {
 
         myAnim.SetFloat ("Speed", currentSpeed);
         FlipArt (currentSpeed);
     }
 
     public void UpdateIsGrounded(bool isGrounded){
         myAnim.SetBool ("isGrounded", isGrounded);
 
     }
 
     public void UpdateBalloonCount(float playerCurrentBalloons){
         myAnim.SetFloat ("playerCurrentBalloons", playerCurrentBalloons);
     }
 }
 

and this is the script with the OnTriggerEnter2D class

     using UnityEngine;
 using System.Collections;
 
 public class EnemyDamage : MonoBehaviour {
 
     public float damage;
     PlayerBalloons player;
 
     void Start () {
 
     }
     
 
     void Update () {
     
     }
 
     void OnTriggerEnter2D(Collider2D other){
         if (other.tag == "Player") {
             player = other.gameObject.GetComponent<PlayerBalloons>();
             player.BalloonPopped(damage);
 
         }
     
     }
 }
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 Ali-hatem · Mar 30, 2016 at 10:25 AM

1 - class PlayerBalloons : AnimatorController class is static class so you don't need a reference to call any thing inside it so :

  public void BalloonPopped(float damage){
          playerCurrentBalloons -= damage;
          Debug.Log (playerCurrentBalloons);
          AnimatorController.instance.UpdateBalloonCount (playerCurrentBalloons);
      }

2- class EnemyDamage :

 PlayerBalloons player;
 GameObject obj;
  void Start () {
   obj = GameObject.FindWithTag ("Player");
   if (obj != null) {
         player = obj.GetComponent<PlayerBalloons > ();
     } else {
         print ("no object found with the given tag");
     }
      void OnTriggerEnter2D(Collider2D other){
      if (other.tag == "Player") {
          player.BalloonPopped(damage);
      }
  }
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

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

MobController 1 Answer

What is causing animation Position strange position changes 0 Answers

Can't jump after adding jump animation 0 Answers

How would you add two animations to one object 1 Answer

I can't see or access a state in the Animation Controler 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