我有一个在Unity中构建的Android应用程序,我正在尝试迭代并显示存储在用户的Android设备中的N个图像。我们的想法是将他们的图像读入Textures并将它们映射到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);
}
但是我一直收到以下错误消息,提示无法加载文件:
Error returned = java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.InputStream.read(byte[])' on a null object reference
请有人能够帮助我了解如何正确访问此文件,然后在这样的目录中迭代N个图像文件吗?
提前致谢!
答案 0 :(得分:2)
也许您可以尝试使用File.ReadAllBytes
中的System.IO
:
Texture2D texture = new Texture2D(2, 2, TextureFormat.ARGB32, false);
byte[] fileByteData = File.ReadAllBytes(path);
texture.LoadImage(fileByteData);
调用LoadImage
时,纹理会自动调整大小。