Как создать двумерный массив в игровом движке Unity?

Как исправить ошибки при создании двумерного массива в C#?

Вот код, который я пытаюсь использовать для создания двумерного массива, состоящего из трех подмассивов (как будто линий), каждый из которых содержит три байтовых переменных (как будто ячейки). Однако, я получаю 19 ошибок при компиляции.

```
verLines = 
        {{cells[0].stateXO, cells[1].stateXO, cells[2].stateXO}, 
        {cells[0].stateXO, cells[1].stateXO, cells[2].stateXO}, 
        {cells[0].stateXO, cells[1].stateXO, cells[2].stateXO}};
```

Примечание: Пока все числа в массиве "cells[число]" одинаковые, но я последующим образом правильно установлю значения.

Ниже приведен немного контекста кода:

```
[SerializeField] private CellBehaviour[] cells;
private byte[,] verLines = new byte[3, 3]
```

На каждой ячейке присутствует скрипт с байтовой переменной, которую мне нужно поместить в массив.
Изображение к вопросу
  • 23 октября 2023 г. 12:28
Ответы на вопрос 3
Для создания двумерного массива в игровом движке Unity вы можете использовать следующий синтаксис:

```csharp
// Создание двумерного массива
byte[,] verLines = new byte[3,3];

// Заполнение массива
verLines[0,0] = cells[0].stateXO;
verLines[0,1] = cells[1].stateXO;
verLines[0,2] = cells[2].stateXO;
verLines[1,0] = cells[0].stateXO;
verLines[1,1] = cells[1].stateXO;
verLines[1,2] = cells[2].stateXO;
verLines[2,0] = cells[0].stateXO;
verLines[2,1] = cells[1].stateXO;
verLines[2,2] = cells[2].stateXO;
```

Обратите внимание, что индексы массива начинаются с 0.

Относительно ошибок при компиляции, вы имеете проблемы с неправильным синтаксисом в вашем исходном коде.

- Во-первых, вы пытаетесь инициализировать `verLines` с помощью оператора присваивания, но пропущены круглые скобки. Вместо этого используйте `new byte[3, 3]`.

- Во-вторых, вы не указываете тип массива (`byte[,]`) при инициализации.

- В-третьих, у вас отсутствует точка запятой в вашем объявлении массива `private byte[,] verLines = new byte[3, 3]`.

- В-четвертых, в вашем коде вы не используете корректную синтаксическую конструкцию для инициализации двумерного массива. Вместо этого используйте отдельные операторы присваивания для заполнения массива.

Ниже приведен правильный код для вашего случая:

```csharp
[SerializeField] private CellBehaviour[] cells;
private byte[,] verLines = new byte[3, 3];

void Start()
{
    verLines[0, 0] = cells[0].stateXO;
    verLines[0, 1] = cells[1].stateXO;
    verLines[0, 2] = cells[2].stateXO;
    verLines[1, 0] = cells[0].stateXO;
    verLines[1, 1] = cells[1].stateXO;
    verLines[1, 2] = cells[2].stateXO;
    verLines[2, 0] = cells[0].stateXO;
    verLines[2, 1] = cells[1].stateXO;
    verLines[2, 2] = cells[2].stateXO;
}
```

Обратите внимание, что в приведенном коде используется `Start()`, чтобы заполнить массив значениями.
verLines = new byte[,]
{
    {cells[0].stateXO, cells[1].stateXO, cells[2].stateXO},
    {cells[0].stateXO, cells[1].stateXO, cells[2].stateXO},
    {cells[0].stateXO, cells[1].stateXO, cells[2].stateXO}
}; 
 добавь тип byte[,]

Похожие вопросы