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];
}
}
}
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
Actually Vector3 has a two float parameter constructor, anyway, I tried and I get the same exact errors
– Alcal3Thank you! That sure did it
– Alcal3I can't use list.Last() unless I add using System.Linq; as a footnote for anyone who may get CS1061 error.
– meat5000