android - 如何在运行时将图像从 Android 设备的图库映射到 Unity 应用程序中的纹理?

标签 android image unity-game-engine textures

我有一个在 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/

相关文章:

android - React Native Eject 但仍然能够使用 React Native 代码

java - 如何使 float 按钮可点击

android - 缩略图/图像缓存文件?

java - 在java中显示图像

php - 无法将_uploaded_file 移动到文件夹

process - 当你在 Unity 中按下 "play"按钮时到底会发生什么?

GitKraken:推送许多文件时出错( block 头问题)

java - 列表值对 BaseAdapter 类不可见

java - 处理 AndroidStudio 中的重复条目 : java. util.zip.ZipException

android - Unity 中的 UI 切换