GUI grid of buttons issue.

Hi!

I am trying to create a shop in my game. For that I need to put all items in stock in a grid of GUI Buttons. I am using this:

int wepIdInt = 0;
for (int i = 0; i < rows; i ++)
{
	GUILayout.BeginHorizontal ();
	for (int o = 0; o < columns; o ++)
	{
		GUILayout.BeginVertical ();
		wepIdInt ++;
		GUILayout.Button (weaponsForSale[wepIdInt].GetComponent<WeaponScript>().weaponName);
		GUILayout.EndVertical ();
	}
	GUILayout.EndHorizontal ();
}

(I know I souldn’t use GetComponent like that, but its just temporary)

The problem is that when there are more GUI Buttons than there are elements in the weaponsForSale list, I get ArgumentOutOfRangeExceptions. (Eg: If I have columns and rows at 3, but only 7 elements in the List, it doesn’t work)
I know the built in grid selection does this automaticly, but I would like to do it this way if possible.

Does anyone know how I could fix this? Am I on the right track or is there another way I can do this?

if your rows and columns start at 0, your going to have 9 items I assume… arrays start at zero though so the actual Index will be 8

(row 0, col 0) : wepIdInt = 1;
(row 0, col 1) : wepIdInt = 2;
(row 0, col 2) : wepIdInt = 3;
(row 1, col 0) : wepIdInt = 4;
(row 1, col 1) : wepIdInt = 5;
(row 1, col 2) : wepIdInt = 6;
(row 2, col 0) : wepIdInt = 7;
(row 2, col 1) : wepIdInt = 8;
(row 3, col 2) : wepIdInt = 9;

your wepIdInt will probably search for a value one higher than the bounds of your array maybe??

If your trying to search beyond the bounds for a weapon name that doesn’t exist its gonna give you errors… maybe try seeing if the index has anything inside it? or checking if wepId is greater than yourArray.Count;