- 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