Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Game Development

Rich Zimmerman
Rich Zimmerman
24,063 Points

variable target of BirdMovement has not been assigned?

Kind of stumped here, target variable is assigned and the game functions as expected, but the console throws this error with each frame.

UnassignedReferenceException: The variable target of BirdMovement has not been assigned.
You probably need to assign the target variable of the BirdMovement script in the inspector.
UnityEngine.Transform.get_position () (at C:/buildslave/unity/build/artifacts/generated/common/runtime/TransformBindings.gen.cs:27)
BirdMovement.Update () (at Assets/Scripts/BirdMovement.cs:22)

I've seen some forum posts elsewhere with people getting similar issues but no real answer that fixes it for me.

Here's the code.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class BirdMovement : MonoBehaviour {

    [SerializeField]
    private Transform target;

    private NavMeshAgent birdAgent;
    private Animator birdAnimator;

    // Use this for initialization
    void Start () {
        birdAgent = GetComponent<NavMeshAgent>();
        birdAnimator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update () {
        birdAgent.SetDestination(target.position);
        // Measure the magnitude of the NavMeshAgent's velocity
        float speed = birdAgent.velocity.magnitude;

        birdAnimator.SetFloat("Speed", speed);
    }
}

And the Target variable is assigned in the inspector properly.

Rich Zimmerman
Rich Zimmerman
24,063 Points

apparently the link to the video I'm on disappeared when i posted this. https://teamtreehouse.com/library/create-enemy-navigation-and-ai

1 Answer

Rich Zimmerman
Rich Zimmerman
24,063 Points

Adding this to the Start method seemed to fix the issue.. if anyone has any insight - it'd be greatly appreciated.

target = Transform.FindObjectOfType<Transform>();