i have been looking at all the answers and i am really new at the unity so please bear with me.
if have 3 scripts. one to maintain an 2d array
public class Grid
{
public static Element[,] elementArray = new Element[5, 5];
}
this references a script i attached to a prefab gameobject:
public class Element : MonoBehaviour {
//starts at -1 to due to the loops in gamesetup script
public static int locX = -1;
public static int locY = -1;
int x = (int)locX;
int y = (int)locY;
Grid.elementArray[locY, locX] = this;
}
lastly i have a script to build up a variable sized puzzlefield with gameobjects:
public void GenerateGrid()
{
GameObject cellInputField;
RectTransform rowParent;
for (int rowIndex = 0; rowIndex < numOfRows; rowIndex++)
{
rowParent = (RectTransform)Instantiate(panelRow);
rowParent.transform.SetParent(Gridset);
rowParent.transform.localScale = Vector3.one;
Element.locY += 1;
Element.locX = 0;
for (int colIndex = 0; colIndex < numOfColumns; colIndex++)
{
cellInputField = (GameObject)Instantiate(cellgrid);
cellInputField.transform.SetParent(rowParent);
cellInputField.GetComponent<RectTransform>().localScale = Vector3.one;
}
}
in the test i am trying to build a grid of 5 by 5 so 25 gameobjects but i 25 times the same error:
IndexOutOfRangeException: Array index is out of range.
Element.Start () (at Assets/Element.cs:37)
if i understand the message correctly i am still not passing the correct [x,y] location to the array so that the gameobject is stored in the correct position. but i am complete missing a solution to this issue. i hope anyone can help me.