Array index is out of range

Hi, I have these code, but always get “Array index is out of range” error.

var selGridInt : int = 0;
var selStrings : String = [“Camera 1” , “Camera 2” , “Camera 3” , “Camera 4” , “Camera 5” , “Camera 6” , “Camera 7” ];

private var camera3 : Camera;

function OnGUI ()

{
GUILayout.BeginArea( Rect( 5, 25, 120, 230),GUI.skin.window);

//SelectionGrid pops out a variable number of buttons, only one can be active at a time.
selGridInt = GUI.SelectionGrid (Rect (10,20 ,100, 200), selGridInt, selStrings, 1);

GUILayout.EndArea();
}

function Update()
{
//If element 0 of the SelectionGrid is enabled,
if (selGridInt == 0)
{
camera3[0].enabled = true;
camera3[1].enabled = false;
camera3[2].enabled = false;
camera3[3].enabled = false;
camera3[4].enabled = false;
camera3[5].enabled = false;
camera3[6].enabled = false;
camera3[7].enabled = false;
}
if (selGridInt == 1)
{
camera3[0].enabled = false;
camera3[1].enabled = true;
camera3[2].enabled = false;
camera3[3].enabled = false;
camera3[4].enabled = false;
camera3[5].enabled = false;
camera3[6].enabled = false;
camera3[7].enabled = false;
}
if (selGridInt == 2)
{
camera3[0].enabled = false;
camera3[1].enabled = false;
camera3[2].enabled = true;
camera3[3].enabled = false;
camera3[4].enabled = false;
camera3[5].enabled = false;
camera3[6].enabled = false;
camera3[7].enabled = false;
}
if (selGridInt == 3)
{
camera3[0].enabled = false;
camera3[1].enabled = false;
camera3[2].enabled = false;
camera3[3].enabled = true;
camera3[4].enabled = false;
camera3[5].enabled = false;
camera3[6].enabled = false;
camera3[7].enabled = false;

	}
	if (selGridInt == 4)
	{
    camera3[0].enabled = false;
	camera3[1].enabled = false;
	camera3[2].enabled = false;
	camera3[3].enabled = false;
	camera3[4].enabled = true;
	camera3[5].enabled = false;
	camera3[6].enabled = false;
	camera3[7].enabled = false;
	
	}
	if (selGridInt == 5)
	{
	camera3[0].enabled = false;
	camera3[1].enabled = false;
	camera3[2].enabled = false;
	camera3[3].enabled = false;
	camera3[4].enabled = false;
	camera3[5].enabled = true;
	camera3[6].enabled = false;
	camera3[7].enabled = false;
	
	}
	if (selGridInt == 6)
	{
	camera3[0].enabled = false;
	camera3[1].enabled = false;
	camera3[2].enabled = false;
	camera3[3].enabled = false;
	camera3[4].enabled = false;
	camera3[5].enabled = false;
	camera3[6].enabled = true;
	camera3[7].enabled = false;
	
	}
	if (selGridInt == 7)
	{
	camera3[0].enabled = false;
	camera3[1].enabled = false;
	camera3[2].enabled = false;
	camera3[3].enabled = false;
	camera3[4].enabled = false;
	camera3[5].enabled = false;
	camera3[6].enabled = false;
	camera3[7].enabled = true;
	
	}

}

camera3 is declared as an array but with nothing in it. You don’t show any code that initializes it either. So I can only assume that its empty. You could make it public, then in the Inspector set it to have 8 entries, and drag a different game object (presumably cameras) to each element of the array. Or you could write code that initializes the array before the first time Update() is called.

Note: You can replace all that Update logic with something like the following:

var i=0;
while (i <= 7)
{
  if (selGridInt == i)
     camera3*.enabled = true;*

else
camera3*.enabled = false;*
i += 1;
}
That’s not tested code or anything, and I usually don’t work in JavaScript but that should give you an idea of how to simplify it.