CS1519 List Error

I’m trying to use lists in a simple game, but I get an error when I try to add new elements to my Vector3 List, the compiler says it’s getting an unexpected symbol ‘(’ and MonoDevelop actually underlines ‘new’ when I try to use Add.
Help me maybe?

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

public class NewBehaviourScript : MonoBehaviour {
	List <Vector3> PatrolPoint = new List<Vector3>(); 
	Vector3 vector = new Vector3 (0, 0);
	PatrolPoint.Add(vector); //these line gets an error
	PatrolPoint.Add(new Vector3(10,10)); //so do these two
	PatrolPoint.Add(new Vector3(0,10));
	Vector3 NxPatrolPoint = PatrolPoint[0];
	int pointIndex = 0;
	public int speed = 10f;
	// Use this for initialization
	void Start () {
	
	}

	// Update is called once per frame
	void Update () {
		transform.Translate (NxPatrolPoint * speed);
		if (transform.position = NxPatrolPoint) {
			if(transform.position = PatrolPoint.Last()){
				pointIndex = 0;
			}
			NxPatrolPoint = PatrolPoint[pointIndex];
		}
	
	}
}

1 Answer

1

A Vector3 constructor requires 3 parameters - x,y, and z.
So:

Vector3 vector = new Vector3 (0, 0);

Should be:

Vector3 vector = new Vector3 (0, 0, 0);

and likewise for the other Vector3’s.

edit:

Ack! Scrap that (although I still recommend you explicitly set all parameters of a Vector3) - the problem is that you’re trying to populate the PatrolPoint list in the class definition outside of a method. You need to move those lines to the Start() function like this:

    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
     
    public class NewBehaviourScript : MonoBehaviour {
       List <Vector3> PatrolPoint = new List<Vector3>();
    
       Vector3 NxPatrolPoint = PatrolPoint[0];
       int pointIndex = 0;
       public int speed = 10f;

    // Use this for initialization
    void Start () {
      Vector3 vector = new Vector3 (0, 0);
      PatrolPoint.Add(vector); //these line gets an error
      PatrolPoint.Add(new Vector3(10,10)); //so do these two
      PatrolPoint.Add(new Vector3(0,10));
    }
     
    // Update is called once per frame
    void Update () {
      transform.Translate (NxPatrolPoint * speed);
      if (transform.position = NxPatrolPoint) {
        if(transform.position = PatrolPoint.Last()){
          pointIndex = 0;
        }
      NxPatrolPoint = PatrolPoint[pointIndex];
      }
     
    }
}

Actually Vector3 has a two float parameter constructor, anyway, I tried and I get the same exact errors

Thank you! That sure did it

I can't use list.Last() unless I add using System.Linq; as a footnote for anyone who may get CS1061 error.