EncodeToPNG вешает скрипт - PullRequest
       43

EncodeToPNG вешает скрипт

4 голосов
/ 02 марта 2020

Что я хочу - это прочитать png файл как массив byte []. Мне нужен этот массив, чтобы отправить его на удаленный сервер через HTTP-запрос POST. Мой код выглядит так:

Sprite sprite = Resources.Load<Sprite>("Images/" + _filename);
print("Sprite loaded.");
print("Texture size: " + sprite.texture.width + ", " + sprite.texture.height);
byte[] bytes = sprite.texture.EncodeToPNG();
print("Done.");

Журналы выглядят так (я запустил приложение в редакторе единиц):

Sprite loaded. 
Texture size: 750, 1334

Он никогда не печатает «Готово». Я ждал несколько минут. В консоли Unity нет ошибок. Файл размером около 1 МБ, так что это не огромное фото. Похоже, что спрайт загружается без проблем, но его нельзя преобразовать в массив byte [] (как png). Что происходит?

1 Ответ

1 голос
/ 02 марта 2020

@ KingGary спасибо за подсказку!

Я никогда не думал, что это вызовет исключение при использовании try-catch, когда нет ни одного без него.

Исключение:

System.ArgumentException: Texture 'test_image' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.

Решение состоит в том, чтобы выбрать файл в редакторе единиц и включить «Чтение / запись включена» в окне свойств.

...