Unity读取windows和Android SDcard文件
来源:互联网 发布:linux文本替换命令 编辑:程序博客网 时间:2024/05/05 20:06
全部都是路径惹的祸
读取 windows D: 盘下的 test.txt 文件,
编辑器里运行,console上可以查看:
windows上 路径 / 要写成 \\ 写一个也不行,可能会被转义,反正也无法读取内容
string windowsUrl = "file://D:\\test.txt"; WWW w = new WWW(windowsUrl); yield return w; if (w.isDone) { Debug.Log("读取 D:盘 test文件 ==== "+w.text); }
Androud相关的各大论坛相关文章很多,但是说的都不太清楚,所以特此记录。
log中 我打印了 Unity里面的路径,Androd上需要注意的也是 路径上的统一:
Android上获取Api提供的路径:
Log.e(TAG, "onCreate: packageName = " + this.getExternalCacheDir()); Log.e(TAG, "onCreate: packageName = " + this.getExternalFilesDir("")); Log.e(TAG, "onCreate: packageName = " + this.getCacheDir()); Log.e(TAG, "onCreate: packageName = " + this.getPackageName()); Log.e(TAG, "onCreate: packageName = " + Environment.getDataDirectory()); Log.e(TAG, "onCreate: packageName = " + Environment.getDataDirectory().getAbsolutePath()); Log.e(TAG, "onCreate: packageName = " + Environment.getExternalStorageDirectory());
IO方式 加载sdcard上的图片资源
加载的 /storage/emulated/0/ProjectName/Image/avatar/20170523_164417.jpg,
image = this.GetComponentInChildren<Image>(); Debug.Log("IO加载用时: image = this.GetComponent<Image> ========== " + image); Debug.Log("IO加载: Application.dataPath " + Application.dataPath ); // Application.dataPath /data/app/com.putao.ptx.core-1/base.apk Debug.Log("IO加载: Application.persistentDataPath " + Application.persistentDataPath); // Application.persistentDataPath /storage/emulated/0/Android/data/com.putao.ptx.core/files Debug.Log("IO加载:GameObject.Find" + GameObject.Find("Canvas/Avator").GetComponent<Image>()); // /data/user/0/com.putao.paichallenge/cache/20170524_130527.jpg // path ======= "/storage/emulated/0/ProjectName/Image/avatar/20170523_164417.jpg" FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read); fileStream.Seek(0, SeekOrigin.Begin); //创建文件长度缓冲区 byte[] bytes = new byte[fileStream.Length]; //读取文件 fileStream.Read(bytes, 0, (int)fileStream.Length); //释放文件读取流 fileStream.Close(); fileStream.Dispose(); fileStream = null; //创建Texture int width = 300; int height = 372; Texture2D texture = new Texture2D(width, height); texture.LoadImage(bytes); //创建Sprite Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width,texture.height), new Vector2(0.5f, 0.5f)); image.sprite = sprite;
log上可以看出来 android上 getExternalFilesDir("") 和 Unity里面的Application.persistentDataPath是一致的
/storage/emulated/0/Android/data/com.putao.ptx.core/files
WWW方式加载本地图片
url= "file://"+ "/storage/emulated/0/ProjectName/Image/avatar/20170523_164417.jpg"
根本不是加"jar:file://"。。。某些博主根本就不试试么,瞎写。
public void LoadByWWW(String path) { StartCoroutine(doLoadByWWW(path)); } IEnumerator doLoadByWWW(String path) { string url = "file://" + "/storage/emulated/0/PaiChallenge/Image/avatar/20170523_164417.jpg"; Debug.Log("doLoadByWWW == url ================== " + url); WWW w = new WWW(url); yield return w; if (w.isDone) { Sprite sprite = Sprite.Create(w.texture, new Rect(0, 0, w.texture.width, w.texture.height), new Vector2(0.5f, 0.5f)); GameObject.Find("Canvas/Avator").GetComponent<Image>().sprite = sprite; }
还有 就是权限问题的添加 :Player settings -- Other settings -- write permission的设置 Sdcard。这个是在Unity编辑器里打包的情况。
如果导出到studio 里面的话,可自行修改Manifest文件。
阅读全文
1 0
- Unity读取windows和Android SDcard文件
- SdCard读取文件和音乐
- android的sdcard文件的读取和保存详细介绍
- Android下拉刷新实例----读取sdcard文件
- Android读取SDCard文件到ListView显示
- Android 读取sdcard指定目录文件
- Android sdcard下读取TXT文件
- android 保存和读取String到sdcard
- 从sdcard读取文件
- [android] 从 SDcard 中进行文件的读取操作,含中文和数字
- Android重要的文件目录mnt/sdcard 和 /sdcard
- android 读取sdcard
- Unity读取Android平台文件
- unity PC和android不同平台读取xml文件比较
- unity文件存储和读取
- Android中使用SDcard进行文件的读取
- Android中使用SDcard进行文件的读取 .
- android读取SDCard任意路径下的文件
- SpringBoot 启动解析
- 顺时针打印矩阵
- Matlab 用于求解无约束非线性规划的函数有:fminsearch和fminunc,用法介绍如下。
- hibernate-基础配置-3
- pandas数据分组和聚合操作
- Unity读取windows和Android SDcard文件
- #HDU3530#Subsequence(单调队列)
- Maven的pom.xml介绍(转)
- A Bug's Life POJ
- VIM使用技巧
- Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied的解决办法
- 形参与实参的区别
- Ubuntu虚拟机实现两结点SSH免密码通信
- 爬虫学习之旅