Я пытаюсь использовать Python для отправки изображений в Unity C #, где я хочу отобразить изображения, наложенные на текущий дисплей (для каждого кадра).
В настоящее время я использую zmq для получения байтового массива изображения PNG из python в Unity.
Изображение в форме массива размером 256x256x4. При использовании функции np.tobytes
длина сообщения составляет 2097152, что больше (256x256x4)
Как только сообщение отправлено в Unity, я пытаюсь получить массив цветов из массива байтов для использования Texture2D.readPixels32()
, используя следующий фрагмент кода.
var colorArray = new Color32[message.Length/4];
for(var i = 0; i < message.Length; i+=4)
{
var color = new Color32(message[i + 0], message[i + 1], message[i + 2], message[i + 3]);
colorArray[i/4] = color;
}
Texture2D tex2new=new Texture2D(Screen.width,Screen.height);
print (Screen.height + " " + Screen.width + " " + colorArray.Length);
tex2new.SetPixels32(colorArray);
Ошибка SetPixels32
вызвана с недопустимым количеством пикселей в массиве
UnityEngine.Texture2D:SetPixels32(Color32[])
Как мне прочитать байтовый массив в текстуру?
Есть ли лучший способ отображать байтовый массив, когда игра в Unity ведется в режиме реального времени?