public void Init() { _gems = new GemController[_itemsInRow, _itemsInRow]; float prefabSize = _gemPrefab.GetComponent <Renderer>().bounds.size.x; for (int i = 0; i < _itemsInRow; i++) { for (int j = 0; j < _itemsInRow; j++) { if (i == _itemsInRow - 1 && j == _itemsInRow - 1) { _blankPos = new IntVector2(i, j); _gems[i, j] = GemController.BlankGem(); continue; } GemController gem = Instantiate(_gemPrefab); gem.transform.parent = transform; gem.transform.localRotation = new Quaternion(0, 0, 0, 0); gem.transform.localScale = Vector3.one * prefabSize; float x = (j - _itemsInRow * 0.5f + 0.5f) * prefabSize; //FIXME not elegant, but works as aspected. God forgive me Vector3 newPos = new Vector3( (j - _itemsInRow * 0.5f + 0.5f) * prefabSize * _gemsOffset, _gemPrefab.transform.localPosition.y, ((_itemsInRow - i - 1) - _itemsInRow * 0.5f + 0.5f) * prefabSize * _gemsOffset); gem.transform.localPosition = newPos; gem.Init(i * _itemsInRow + (j) + 1, prefabSize * _gemsOffset); _gems[j, i] = gem; } } Shuffle(); //LogArray(); }