2016-01-16 33 views
2

我有一個插件,允許我從Android手機庫中訪問圖片。這給了我一個Texture2D類型的紋理。然後我想使用GetPixels函數編輯它,但默認情況下它不會設置爲可讀。如何讓紋理可讀,以便我可以使用GetPixels?使紋理2D在運行時可讀/腳本Unity3D

基本上我允許用戶從手機中選擇一張照片然後裁剪。在下面的例子中,圖片將被紅色矩形裁剪。如果預先使紋理可讀,哪種方法可行。 http://puu.sh/mxR3h/dfa81719b2.jpg

+0

嗨,你已經做到了這一點成功嗎?我遇到了嚴重的問題,並且我發現'紋理需要被標記爲讀/寫以便能夠在播放器中使用GetRawTextureData來嘗試接受的答案:-( – armnotstrong

回答

2

如果您的項目中有文件,您可以選擇檢查器中的紋理,將紋理類型設置爲「高級」,然後將「讀取和寫入已啓用」設置爲true。

如果沒有,您可以嘗試在您擁有的紋理上使用GetRawTextureData(),然後創建一個具有相同寬度和高度的新紋理,並使用從舊紋理獲得的數據在新紋理上調用LoadImage()確保markNonReadable爲false。那麼你應該能夠做到你想要的新紋理,並在用戶裁剪圖像時顯示。

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

+0

如何確保markNonReadable爲false?或者,您如何確定設置爲false? – Waltari

+1

markNonReadable是LoadImage()中的一個可選參數。更多信息:http://docs.unity3d.com/ScriptReference/Texture2D.LoadImage.html – Kimimaru

+0

嗨,@Kimimaru,我正在處理同樣的問題OP遇到了,嘗試使用'GetRawTextureData()'來構建一個新的'Texture2D',但遇到'Texture需要被標記爲讀/寫以便能夠在播放器中獲取GetRawTextureData「的解決方案,似乎我必須得到一個''Read/Write'' Texture來使用'GetRawTextureData()'方法,這又會讓我再次進入第一個位置,有什麼建議嗎?或者我做錯了嗎?希望你的回覆,提前致謝。 – armnotstrong