Эта строка кода:
Color[,,] testColor = new Color[originalColour, originalColour, originalColour];
Не «заполняет» массив значениями originalColour, originalColour, originalColour
, но вместо этого (ошибочно, отсюда и полученная ошибка) объявляет многомерный массив с длины измерений.
Так, например:
Color[, ,] array1 = new Color[4, 2, 3];
Инициализирует трехмерный массив со следующими длинами
- x Размер имеет длину 4 * Измерение 1013 *
- y имеет длину 2
- Измерение z имеет длину 3
И поскольку [4, 2, 3]
объявляет длину каждого измерения, вы получаете упомянутая ошибка
Невозможно неявно преобразовать тип 'UnityEngine.Color' в 'int'.
Но вам не нужен многомерный массив, вам нужен простой массив (1 измерение) с 3 значениями, поэтому объявление вашего массива должно выглядеть следующим образом
Color[] array1 = new Color[3];
, который инициализирует пустой массив длиной 3.
Для заполнения массива вы можете напишите это:
Color[] array1 = new Color[3];
array1[0] = originalColour;
array1[1] = originalColour;
array1[2] = originalColour;
Если вы хотите инициализировать и заполнить массив в одну строку, правильный синтаксис:
Color[] array1 = new Color[3] { originalColour, originalColour, originalColour };
Вы можете сократить код до этого
Color[] array1 = new [] { originalColour, originalColour, originalColour };
Поскольку вы заполняете массив { originalColour, originalColour, originalColour }
, компилятор знает, что вы хотите 1-мерный массив длиной 3, поэтому вы можете записать только new []
.
Этот массив может быть добавлен к List<Color[]>
например.
public List<Color[]> coloursList = new List<Color[]>();
Color[] array1 = new [] { originalColour, originalColour, originalColour };
coloursList.Add(array1);