【问题标题】:Make texture2D readable in runtime/script Unity3D [duplicate]使texture2D在运行时/脚本Unity3D中可读[重复]
【发布时间】:2016-01-16 14:58:16
【问题描述】:

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

基本上,我允许用户从手机中选择一张图片,然后对其进行裁剪。在下面的示例图片中,图片将被红色矩形裁剪。如果我事先使纹理可读,这会起作用。 http://puu.sh/mxR3h/dfa81719b2.jpg

【问题讨论】:

  • 嗨,你成功了吗?我遇到了确切的问题,我发现Texture needs to be marked as Read/Write to be able to GetRawTextureData in player 尝试接受的答案:-(

标签: c# unity3d texture2d unity5 unity3d-2dtools


【解决方案1】:

如果您的项目中有文件,您可以在检查器中选择纹理,将纹理类型设置为“高级”,然后将“启用读写”设置为 true。

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

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

【讨论】:

  • 如何确保 markNonReadable 为假?或者你如何将其设置为 false?
  • markNonReadable 是 LoadImage() 中的可选参数。更多信息:docs.unity3d.com/ScriptReference/Texture2D.LoadImage.html
  • 嗨,@Kimimaru,我正在处理与 OP 遇到的相同的问题,尝试使用您的解决方案尝试使用 GetRawTextureData() 构建一个新的 Texture2D 但遇到 Texture needs to be marked as Read/Write to be able to GetRawTextureData in player 和它看来我必须得到一个Read/Write 能够使用GetRawTextureData() 方法的纹理,这又把我放在第一位,有什么建议吗?还是我做错了?希望得到您的回应,在此先感谢。
  • @armnotstrong 是您在项目中获取数据的纹理吗?如果是这样,您可以执行我上面提到的步骤并在检查器中将其标记为读/写。
  • @Kimimaru 不幸的是,图片是由画廊的一个罐子加载的,没有找到罐子的代码,所以检查员无法更改。
猜你喜欢
  • 2016-02-11
  • 2017-11-27
  • 2014-09-30
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
相关资源
最近更新 更多