我有一个在 Unity 中内置的 Android 应用程序,我正在尝试迭代并显示存储在用户 Android 设备中的 N 个图像。这个想法是将它们的图像读入纹理并将它们映射到我的 Unity 场景中的四边形上。
为了简化问题,我只是尝试获取一个文件,我知道该文件 100% 存在于我设备的照片库中的以下目录“/storage/emulated/0/DCIM/Camera/”中:
string path = "/storage/emulated/0/DCIM/Camera/20161019_142127.jpg";
WWW www = new WWW("file://" + path);
yield return www;
if (string.IsNullOrEmpty(www.error))
{
m_material.mainTexture = www.texture;
Debug.Log("No Error, texture successfully set");
}
else
{
Debug.Log("Error returned = " + www.error);
}
但我不断收到以下错误消息,表明加载文件失败:
返回错误 = java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int java.io.InputStream.read(byte[])”
有人可以帮助我了解如何正确访问此文件并因此迭代此类目录中的 N 个图像文件吗?
提前致谢!
最佳答案
也许您可以尝试使用 System.IO
中的 File.ReadAllBytes
:
Texture2D texture = new Texture2D(2, 2, TextureFormat.ARGB32, false);
byte[] fileByteData = File.ReadAllBytes(path);
texture.LoadImage(fileByteData);
调用LoadImage
时,纹理会自动调整大小。
关于android - 如何在运行时将图像从 Android 设备的图库映射到 Unity 应用程序中的纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40229335/