Создание префабов в матричной форме UNITY - PullRequest
0 голосов
/ 02 мая 2020

Моя проблема: мне нужно создать префабы NxN для формирования матрицы на экране. Мое решение:

Все объекты создаются и имеют родительский холст. Мой сборный блок привязан к верхнему левому углу холста. Мое текущее решение, которое не удовлетворяет моей потребности:

int yAnchorPos = -100;
        for (int row = 0; row < nBoardSize; ++row)
        {
            int xAnchorPos = 100;
            _mGameBoard[row] = new GameObject[nBoardSize];
            for (int col = 0; col < nBoardSize; ++col)
            {
                _tilePrefab = Instantiate(_tilePrefab, transform.position, Quaternion.identity);
                _tilePrefab.transform.SetParent(this.transform);
                _tilePrefab.GetComponent<RectTransform>().anchoredPosition = new Vector3(xAnchorPos,yAnchorPos,0);
                _tilePrefab.transform.tag = row.ToString() + col.ToString();
                _tilePrefab.transform.name = _tilePrefab.transform.tag;
                _mGameBoard[row][col] = _tilePrefab;
                _mGameBoard[row][col].GetComponent<Image>().color = colors[UnityEngine.Random.Range(0, 4)];
                xAnchorPos += 150;
            }
            yAnchorPos -= 150;
        }

Но я хотел бы, чтобы мои объекты имели одинаковое расстояние между ними, даже если мне нужно сгенерировать матрицу 4x4, 6x6, 8x8 и т. Д. c. enter image description here Есть ли решение?

1 Ответ

0 голосов
/ 02 мая 2020

код psuedo измеряет общую ширину холста, выделяя процентное расстояние для промежутков между элементами, задайте размер элемента как #of elements / (ширина холста - интервал) сделать для l oop в каждой итерации i или j перемещать следующий элемент пользовательского интерфейса больше или меньше на размер элемента + (проценты / цифры)

...