使 texture2D 在 runtime/script Unity3D 中可读

Make texture2D readable in runtime/script Unity3D

我有一个插件可以让我访问 Android phone 画廊中的图片。这给了我 Texture2D 类型的纹理。然后我想使用 GetPixels 函数对其进行编辑,但默认情况下它未设置为可读。如何使纹理可读以便我可以在其上使用 GetPixels?

基本上我允许用户 select 来自 phone 的图片然后裁剪它。在下面的示例图片中,图片将被红色矩形裁剪。如果我事先使纹理可读,这会起作用。 http://puu.sh/mxR3h/dfa81719b2.jpg

如果您的项目中有这些文件,您可以 select 检查器中的纹理,将纹理类型设置为 "Advanced," 然后将 "Read and write enabled" 设置为 true。

如果没有,您可以尝试在现有纹理上使用 GetRawTextureData(),然后创建一个具有相同宽度和高度的新纹理,并使用从旧纹理获得的数据在新纹理上调用 LoadImage() ,确保 markNonReadable 为假。然后你应该能够在新纹理上做你想做的事情并在用户裁剪图像时显示它。

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