alwaystest / Blog

24 stars 2 forks source link

Unity加载Android存储卡中的文件 #29

Open alwaystest opened 8 years ago

alwaystest commented 8 years ago

Unity加载Android存储卡中的文件

标签(空格分隔): Unity Android


以加载图片显示到Unity中为例。

使用Unity 5.3。 Android Studio 2.2。 Android SDK 24

首先参照雨松的例子http://www.xuanyusong.com/archives/1480

Android中调用相机照相并裁剪网上已经有了许多的例子。这里只要能调用相机照相并且保存到指定路径即可,如果Unity读取大图片造成OOM问题,那还是再裁剪一下吧。

注解1:主要是路径”/mnt/sdcard/Android/data/com.xys/files”,如下图所示,我们在这里把文件保存在这个路径下。为什么要把图片2进制文件写在这里呢? 还记得以前MOMO给大家说过在Unity中访问Android或IOS本地2进制文件时用到的这个路径,

Application.persistentDataPath 该路径等价于 /mnt/sdcard/Android/data/com.xys/files ,当然后者的包名是对应的工程包名,这样在Unity中可以找到对应裁剪后的图片文件,并且显示在Unity中。

实际上经过我这里测试,Unity需要访问的文件地址并非一定要放到/mnt/sdcard/Android/data/com.xys/files。只要在AndroidManifest.xml定义了android.permission.WRITE_EXTERNAL_STORAGE权限,Unity就可以读取到文件。

我在相机照完相之后,Android调用Unity开始读取图片,将相片的绝对路径传给Unity,Unity使用代码如下

string url = "file://" + path;
WWW www = new WWW(url);//file:///storage/emulated/0/***
yield return www;
Texture2D image = www.texture;
tex.mainTexture = image;

当然,雨松的路径也是可以读取到的。

有一点我没有看明白,不知道这里有没有必要。

while (!www.isDone)
{
}