ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

unity文件操作路径之StreamingAssets文件夹

2021-04-13 21:05:14  阅读:324  来源: 互联网

标签:文件 WWW 读取 dataPath Application unity 文件夹 StreamingAssets


StreamingAssets,在不同的平台上面 (Windows, Ios ,Android),该目录最终发布的位置不同,所以读取的方法也不同。
在这里插入图片描述

WWW是异步加载所以执行加载命令式不能直接执行读取解析操作,要等待
WWW www = new WWW(filePath);
yield return www; // while (!www.isDone) {}
result = www.text;

Android之所以不支持C# IO流 方式读取StreamingAssets下的文件,是因为Android手机中
StreamingAssets下的文件

都包含在压缩的.jar文件中(这基本上与标准的zip压缩文件的格式相同)。这意味着,如果你不使用Unity中的WWW类去检索文件,那么你需要使用额外的软件去查看.jar的存档并获取该文件。


安卓上跟其他平台不一样,安装后,这些文件实际上是在一个Jar压缩包里,所以不能直接用读取文件的函数去读,而要用WWW方式。具体做法如下:
1.把你要读取的文件放在Unity项目的Assets/StreamingAssets文件夹下面,没有这个文件夹的话自己建一个。
2.读取的代码(假设名为"文件.txt")

byte[] InBytes;                                                                                                        //用来存储读入的数据 
if (Application.platform == RuntimePlatform.Android)                                            //判断当前程序是否运行在安卓下 
{ 
        string FileName = "jar:file://" + Application.dataPath + "!/assets/" + "文件.txt"; 
        WWW www = new WWW(FileName);                                                            //WWW会自动开始读取文件 
        while(!www.isDone){}                                                                       //WWW是异步读取,所以要用循环来等待 
        InBytes = www.bytes;                                                                       //存到字节数组里 

} 
else 
{ 
                        //其他平台的读取代码 
}

补充:
各目录权限:

根目录:StreamingAssets文件夹

#if UNITY_EDITOR
string filepath = Application.dataPath +"/StreamingAssets"+"/my.xml";
#elif UNITY_IPHONE
string filepath = Application.dataPath +"/Raw"+"/my.xml";
#elif UNITY_ANDROID
string filepath = “jar:file://” + Application.dataPath + “!/assets/”+"/my.xml;
#endif

根目录:Resources 文件夹

可以使用Resources.Load(“名字”); 把文件夹中的对象加载出来

根目录:Application.dataPath 文件夹

可以使用Application.dataPath进行读操作

Application.dataPath: 只可读不可写,放置一些资源数据

Application.persistentDataPath

IOS与android平台都可以使用这个目录下进行读写操作,可以存放各种配置文件进行修改之类的。

在PC上的地址是:C:\Users\用户名 \AppData\LocalLow\DefaultCompany\test


总结:
一.在项目根目录中创建Resources文件夹来保存文件。
可以使用Resources.Load(“文件名字,注:不包括文件后缀名”);把文件夹中的对象加载出来。
注:此方可实现对文件实施“增删查改”等操作,但打包后不可以更改了。

二.直接放在项目根路径下来保存文件
在直接使用Application.dataPath来读取文件进行操作。
注:移动端是没有访问权限的。

三.在项目根目录中创建StreamingAssets文件夹来保存文件。
1.可使用Application.dataPath来读取文件进行操作。

#if UNITY_EDITOR
string filepath = Application.dataPath +"/StreamingAssets"+"/my.xml";
#elif UNITY_IPHONE
 string filepath = Application.dataPath +"/Raw"+"/my.xml";
#elif UNITY_ANDROID
 string filepath = "jar:file://" + Application.dataPath + "!/assets/"+"/my.xml;
#endif

2.直接使用Application.streamingAssetsPath来读取文件进行操作。
注:此方法在pc/Mac电脑中可实现对文件实施“增删查改”等操作,但在移动端只支持读取操作。

四.使用Application.persistentDataPath来操作文件(荐)
该文件存在手机沙盒中,因为不能直接存放文件,
1.通过服务器直接下载保存到该位置,也可以通过Md5码比对下载更新新的资源
2.没有服务器的,只有间接通过文件流的方式从本地读取并写入Application.persistentDataPath文件下,然后再通过Application.persistentDataPath来读取操作。

截取自:https://www.cnblogs.com/nanwei/p/8795949.html

标签:文件,WWW,读取,dataPath,Application,unity,文件夹,StreamingAssets
来源: https://blog.csdn.net/weixin_42565127/article/details/115678460

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有