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

C#

() use?

its not a problem just a normal code related stuff i wwanted to know first when i was writing script i accidentaly forgot to put () in front of GetComponent<Animator> so it said
Cannot convert method group 'GetComponent' to non-delegate type 'Animator'. Did you intend to invoke the method? Now I obviously found my problem and solved by matching the code. But i just wanted to know the use of these " ( ) " and what the error message said. here is the code

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 () {
    // Set the bird's destination 
    birdAgent.SetDestination(target.position);

    // Measure the magnitude of the NavMeshAgent's Velocity
    float speed = birdAgent.velocity.magnitude;

    // pass the velocity to the animator component
    birdAnimator.SetFloat("Speed", speed);
}

}

1 Answer

Steven Parker
Steven Parker
230,970 Points

To invoke (or "call") a function or method, the name must be followed by parentheses. They may optionally contain argument(s).

When you don't use the parentheses, you are referring to the method itself and not what it would return if you run it. That's why the compiler complained when you attempted to assign it to something that was not a "delegate type".

Since this is a reasonably common mistake, the compiler made the suggestion that perhaps you intended to invoke the method instead, which was exactly the case.