//Creates level visuals and face matrix data from leveldata public Face[,] GenerateLayoutVisual(int levelNumber) { int faceCount = GetLevelTilePairsCount(levelNumber); var faces = faceController.GetShuffledFaces(faceCount); Face[,] facematrix = new Face[levels[levelNumber].columns[0].row.Length, levels[levelNumber].columns.Length]; var index = 0; for (int i = 0; i < facematrix.GetLength(1); i++) { for (int j = 0; j < facematrix.GetLength(0); j++) { if (levels[levelNumber].columns[i].row[j]) { var tileGameobject = Instantiate(tilePrefab.gameObject, tileHolder.transform.position + Vector3.right * j + Vector3.down * i, Quaternion.identity, tileHolder); var tile = tileGameobject.GetComponent <Tile>(); tile.AddFaceToTile(faces[index]); tile.AddController(gameLogicController); facematrix[j, i] = faces[index]; gameLogicController.tileViews.Add(tile); index++; } } } return(facematrix); }