array index out of range

Hey,

Following a tutorial I’m trying to get a cube to patrol in 3 points. I created an array, made its size 3 and added all the patrol points. I added printf to attempt to debug. I have no idea why it keeps setting the array size to 0. All prefabs are set in the inspector, see attached screenshot.

screenshot: http://i.imgur.com/n1Hu9YE.png

This is my console:

IndexOutOfRangeException: Array index is out of range.
Patrol.Start () (at Assets/Scripts/Patrol.cs:11)
3
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
0
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
IndexOutOfRangeException: Array index is out of range.
Patrol.Update () (at Assets/Scripts/Patrol.cs:19)
3
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
0
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
IndexOutOfRangeException: Array index is out of range.
Patrol.Update () (at Assets/Scripts/Patrol.cs:19)
3
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
0
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
IndexOutOfRangeException: Array index is out of range.
Patrol.Update () (at Assets/Scripts/Patrol.cs:19)

This is my code:

using UnityEngine;
using System.Collections;

public class Patrol : MonoBehaviour {
	public Transform[] patrolPoints;
	public float moveSpeed;
	private int currentPoint;

	// Use this for initialization
	void Start () {
		transform.position = patrolPoints[0].position;
		currentPoint = 0;
	}
	
	// Update is called once per frame
	void Update () {
		print (patrolPoints.Length);

		if (transform.position == patrolPoints[currentPoint].position){
			currentPoint++;
		}

		if (currentPoint >= patrolPoints.Length) {
			currentPoint = 0;
		}

		transform.position = Vector3.MoveTowards (transform.position, patrolPoints [currentPoint].position, moveSpeed * Time.deltaTime);
	}
}

This is line 11

transform.position = patrolPoints[0].position;

This is line 19

if (transform.position == patrolPoints[currentPoint].position){

It should be noted that the actual cube patrols correctly, resets correctly and generally behaves as expected. The only issue is this apparent exception that I can’t figure out.

because you did not initialize patrolPoints !

so when you call line11,

we can’t read what is in patrolPoints[0].