Не получается удалить объект Unity
Всем привет. Начал изучение Unity и столкнулся со странной для меня проблемой. Не могу удалить созданный объект методом Destroy(). Мне просто нужно очистить все поле путем удаления ячеек и повторного их создания.
Буду признателен если укажете на ошибку.
Есть объект Cell и массив этих объектов, где я вызываю Instantiate() и храню их.
Из класса Cell ничего не удалял для наглядности, а в самом моем GridController оставил только те строки, где идет взаимодействие с массивом.
public class Cell : MonoBehaviour
{
public System.Action<Cell> onCellPressed;
public Color _teamAColor;
public Color _teamBColor;
public Color _blockedColor;
public Image _cellBackground;
public int playerId = 0;
public int positionX;
public int positionY;
public void SetId(int id)
{
playerId = id;
UpdateBackgroundColor();
}
public void OnCellPressed()
{
onCellPressed.Invoke(this);
}
private void UpdateBackgroundColor()
{
if (playerId == 1)
{
_cellBackground.color = _teamAColor;
}
else if (playerId == 2)
{
_cellBackground.color = _teamBColor;
}
else
{
_cellBackground.color = _blockedColor;
}
}
}
public class GridController : MonoBehaviour
{
public Cell[,] _grid;
public Cell _cellPrefab;
public GameObject playAgainButton;
void Awake()
{
InitGrid();
}
private void InitGrid()
{
_grid = new Cell[_size, _size];
for (int i = 0; i < _size; i++)
{
for (int j = 0; j < _size; j++)
{
_grid[i, j] = Instantiate(_cellPrefab, transform);
}
}
}
public void ClearGrid()
{
for (int i = 0; i < _size; i++)
{
for (int j = 0; j < _size; j++)
{
Destroy(_grid[i, j]);
}
}
}
public void RestartGame()
{
ClearGrid();
// Awake();
}
}
Ответы (1 шт):
Вы удаляете переменную (ну точнее элемент массива) grid, типа данных Cell, а Cell - это скрипт, класс.
Косандой , которую вы сейчас имеете вы удаляете компонент с объекта. Чтобы удалить сам объект пишем:
Destroy(_grid[i, ]. gameObject)
Любая переменная, имеющая тип данных компонента хранить ссылку на объект, на котором собственно и висит скрипт, хранящийся в переменной.