2016-01-16 7 views
2

У меня есть плагин, который позволяет мне получать доступ к изображениям из галереи телефонов Android. Это дает мне текстуру типа Texture2D. Затем я хочу отредактировать его с помощью функции GetPixels, но по умолчанию он не доступен для чтения. Как я могу сделать текстуру читаемой, чтобы я мог использовать GetPixels?Make texture2D читается во время исполнения/скрипт Unity3D

В принципе, я разрешаю пользователю выбирать изображение с телефона, а затем обрезать его. В следующем примере pic изображение будет обрезано красным прямоугольником. Это работает, если я заранее сделаю текстуру. http://puu.sh/mxR3h/dfa81719b2.jpg

+0

Привет, вы успешно это сделали? Я столкнулся с конкретной проблемой. И я обнаружил, что «Текстура должна быть отмечена как« Чтение/Запись », чтобы иметь возможность GetRawTextureData в проигрывателе», пытаясь принять ответ :-( – armnotstrong

ответ

2

Если у вас есть файлы в вашем проекте, вы можете выбрать текстуру в инспекторе, установить тип текстуры в «Дополнительно», а затем установить для параметра «Чтение и запись разрешено» значение true.

Если нет, вы можете попробовать использовать GetRawTextureData() на имеющейся у вас текстуре, а затем создать новую текстуру с одинаковой шириной и высотой и вызвать LoadImage() на новой текстуре с данными, полученными из старого, что markNonReadable является ложным. Затем вы сможете делать то, что хотите, на новой текстуре и отображать ее, пока пользователь обрезает изображение.

http://docs.unity3d.com/ScriptReference/Texture2D.GetRawTextureData.html

+0

Как вы уверены, что markNonReadable является ложным? Или как вы установить его в false? – Waltari

+1

markNonReadable - необязательный параметр в LoadImage(). Подробнее здесь: http://docs.unity3d.com/ScriptReference/Texture2D.LoadImage.html – Kimimaru

+0

Привет, @Kimimaru, я имею дело с той же проблемой, что и OP встретил попытку вашего решения попробовать использовать 'GetRawTextureData()' для создания нового 'Texture2D', но встретиться с' Texture нужно пометить как Read/Write, чтобы иметь возможность GetRawTextureData в игроке', и, похоже, мне нужно получить «Read/Write' able Texture», чтобы использовать метод «GetRawTextureData()», который снова поставил меня на первое место, какие-либо советы? Или я сделал это неправильно? надеюсь на ваш ответ, заранее заблаговременно. – armnotstrong