Вот настройки:
- Префаб, который содержит игровой объект с дочерним изображением (CellPrefab). Когда создается экземпляр ячейки, она получает случайный цвет.
- Сетка ячеек X по Y.
Вот префаб: ![Cell Prefab](https://i.stack.imgur.com/lAt7X.png)
Где база - игровой объект с изображением: ![enter image description here](https://i.stack.imgur.com/lFCCe.png)
, а пиксель - белая точка 1x1.
И код ячейки:
using UnityEngine;
using UnityEngine.UI;
public class Cell : MonoBehaviour
{
private void Start()
{
GetComponent<Image>().color = Random.ColorHSV(0f, 1f, 0f, 1f, 0f, 1f);
}
}
Код для сетки:
public class Grid
{
public Grid(int width, int height, float cellSize, Cell CellPrefab, Canvas canvas)
{
this.cellSize = cellSize;
oneCell = CellPrefab;
gridArray = new int[width,height];
cellContentArray = new Cell[width,height];
for (var x = 0; x < Width; x++)
{
for (var y = 0; y < Height; y++)
{
CreateCell(x, y, GetWorldPosition(x,y) + new Vector2(cellSize,cellSize)*0.5f, canvas);
}
}
}
private void CreateCell(int x, int y, Vector2 position, Canvas canvas)
{
var cell = Object.Instantiate(oneCell, position, Quaternion.identity, canvas.transform);
cell.transform.localPosition = position;
cell.name = $"[{x},{y}]";
cellContentArray[x, y] = cell;
}
private Vector2 GetWorldPosition(int x, int y)
{
return new Vector2(x * cellSize - (Width*cellSize/2f),y * cellSize - (Height*cellSize/2f));
}
}
Обратите внимание, что объекты, содержащиеся в сетке, никогда не будут перемещаться, изменяться в размерах или иным образом переводиться и, таким образом, сохраняются c.
Проблема заключается в том, что размер сетки неуправляем. В моем случае я могу go не ниже сетки 100 на 100. Это означает, что, используя мой текущий метод, я создаю 10 000 объектов gameObjects просто для того, чтобы показать сетку, и на этом этапе я отрисовываю 40 000 трис. Редактор Unity долго не отвечает при попытке выбрать любую из ячеек в сетке.
![25 by 25 grid](https://i.stack.imgur.com/1rhk1.png)
Как вы можете видеть на скриншоте, каждая ячейка представляет собой только квадратное изображение с цветом (рандомизированным).
Я бы оценил некоторые указатели или способы работы с большим количеством игровых объектов в Unity или, если есть целый другой как я могу go об этой проблеме. Может быть, это способ "сква sh" всех изображений в одно большое, но при этом хранить информацию о различных положениях ячеек и информацию об объектах.
Спасибо!