- Home /
Help with Animator has not been initialized error
Every time I try to run the game I get the error: Animator has not been initialized. UnityEngine.Animator:SetFloat(String, Single)
Here's the portion it's calling the error on:
anim.SetFloat("Speed", speed); anim.SetFloat("Move", isMoving);
And here's the whole script:
 public class PlayerMovement : MonoBehaviour
     {
         public float speed = 1f;
         public Vector3 touchPoint;
         public float isMoving = 1f;
         
     public Animator anim; 
     void Update()
     {
         anim.SetFloat("Speed", speed);
         anim.SetFloat("Move", isMoving);
         
         // Lerps to the last position touched, going to have to modify this
         // to only work when tapped not hold cause shooting will be hold.
         
         if (Input.touchCount > 0 )
         {
             // Shoots a ray where you touched the screen
             RaycastHit hit;
             // There was an error before. The tag must be main camera.
             Ray ray = Camera.main.ScreenPointToRay(Input.touches[0].position);
             
             if (Physics.Raycast(ray, out hit, Mathf.Infinity))
             {
                 // converts the touch point to unitys 3d worldspace Vector3
                 touchPoint = hit.point;                                                                         
             }
         }
         MoveToPos(touchPoint);
         //isMoving = (Mathf.Abs(transform.position.z - touchPoint.z)* 10);
     }
     void MoveToPos(Vector3 touchPoint)
     {          
         gameObject.transform.position = Vector3.Lerp(gameObject.transform.position, new Vector3(touchPoint.x, 10, touchPoint.z), speed * Time.deltaTime);    // LAWL this had to be z even tho im using y for droid , wasted alot of time on that.  
         //gameObject.transform.LookAt(touchpoint);
     }
 }
 
Answer by HelloRainbow · Nov 10, 2015 at 05:35 PM
Animator not ready in this frame, use it in next frame. you can use coroutine to do this:
yield return new WaitForEndOfFrame(); obj.GetComponent().SetBool("run", true);
Answer by mscarter · Jan 30, 2014 at 06:38 PM
I had this error and found that the controller reference on my Animator component had been set to null somehow. Re-adding the reference to the Controller fixed the issue.
Answer by KCoulombe · Aug 06, 2014 at 08:29 PM
you defined "anim" but never set it to anything.
try:
 void Start()
 {
     anim = GetComponent<Animator>();
 }
This will set "anim" to the Animator component on the game object.
Answer by SuperBrian69 · Nov 14, 2013 at 11:57 PM
I had this error and struggled for a few hours, but then I added:
"anim = GetComponentAnimator>();"
in the update function and it seems to work, but I am not sure why...
Not very good solution. Not at every update Unity will seek for Animator component. And this can dramatically slow your game.
Answer by m_danish_s · Jul 01, 2015 at 10:39 AM
I had the same issue with unity 5.0 but this was due to my stupidity.
Make sure you are referencing to the correct object. I had object referenced from inspector to my script and I was calling getComponent on that object. For testing I just replaced the object which didn't have Animator component attached to it.
I get 999+ caution warnings - not errors but the yield sign warning. and no logic for most of them . I have a SetTrigger call in an OnTrigger Enter. Cleasrly the animator should have initialized in the start or even an awake function. i mean I have not even asked the animator to do anything yet and unity is telling me that line of code is a "caution" because the animator has not been initialized. I have been ignoring it because it works - none of my 999+ "cautoions" break the game so what is the deal
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                