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