- Home /
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?
Answer by SuperKash · Sep 27, 2013 at 05:13 AM
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;
Sorry for not responding sooner, but it works now. I just simply check
if (wepIdInt < myArray.Count)
and put the button inside that.
Thanks!
Your answer
Follow this Question
Related Questions
Text pop up when mouse over gui button 2 Answers
GUI.Button is acting funky. 2 Answers
GUI Button Position - Can it float to the top-left? 3 Answers
GUI Button to create another GUI 1 Answer
Place Inventory Into GUI Button Grid 3 Answers