`Grid Layout Group` — это компонент в Unity, используемый для автоматического управления размещением дочерних объектов в родительском контейнере в виде сетки (grid). Он позволяет создавать двухмерные массивы элементов и автоматически регулировать их размер, позицию и расстояние между собой.
Этот компонент часто используется в интерфейсах пользователей (UI), особенно когда необходимо отобразить большое количество однотипных элементов, таких как кнопки, изображения или карточки.
### Основные параметры:
- **Cell Size**: Размер ячейки в сетке. Это определяет размер каждого дочернего элемента.
- **Spacing**: Расстояние между ячейками по горизонтали и вертикали.
- **Padding**: Отступы сетки от краёв родительского контейнера.
- **Start Corner**: Угол, с которого начнётся заполнение сетки (верхний левый, верхний правый, нижний левый, нижний правый).
- **Start Axis**: Ось, по которой будут добавляться новые элементы (горизонтальная или вертикальная).
- **Child Alignment**: Выравнивание дочерних элементов внутри сетки.
### Пример использования на C#:
```csharp
using UnityEngine;
using UnityEngine.UI;
public class GridSetup : MonoBehaviour
{
public GameObject itemPrefab; // Префаб для элементов сетки
public int rows = 5; // Количество строк
public int columns = 5; // Количество столбцов
void Start()
{
GridLayoutGroup grid = GetComponent<GridLayoutGroup>();
grid.cellSize = new Vector2(50, 50); // Размер ячейки
grid.spacing = new Vector2(5, 5); // Расстояние между ячейками
// Создание элементов сетки
for (int i = 0; i < rows * columns; i++)
{
Instantiate(itemPrefab, transform);
}
}
}
```
В этом примере мы создаем сетку 5x5 и заполняем ее префабами `itemPrefab`. Размер ячейки и расстояние между ячейками устанавливаются программно.
### Производительность:
В большинстве случаев `Grid Layout Group` не сильно влияет на производительность, если число элементов и частота их изменения не слишком велики. Однако для сцен с большим числом элементов лучше использовать оптимизированные решения, такие как "Object Pooling" (объектные пулы).