Unity 对Application.streamingAssetsPath和Application.persistentDataPath路径的理解

Application.streamingAssetsPath和Application.persistentDataPath这个两个路径以前一直困扰了我很久,最近终于开窍了。。。

在ios端和Android端Application.streamingAssetsPath只能读取而不能修改,一般在这个文件夹里面存放一些二进制文件(比如AssetBundle,mp4等一些文件),这些文件在打包时不会被压缩(最好只放少量的文件,而且要做好加密工作,不然别人一解压就得到了里面的内容了),因此读取的速度是比较快的。在Android端读取这个文件夹时,只能使用WWW进行异步读取,而在ios和pc上则可以使用File类及其他同步读取方式。

Application.persistentDataPath可以在运行后进行读写,由于有了这个特性,我们可以将需要热更的文件放在里面(当然不能直接放,可以将一些文件放在Application.streamingAssetsPath,在运行后再将Application.streamingAssetsPath里面的文件移动到Application.persistentDataPath下,再进行热更。也可以完全从服务器上下载后存放在Application.persistentDataPath。)。同样的在Android端读取这个文件夹时,只能使用WWW进行异步读取,而在ios和pc上则可以使用File类及其他同步读取方式。

上面如果有不对地方还请各位提出,本人好及时改正。

附上几个参考文章的链接

http://www.xuanyusong.com/archives/4033

http://www.xuanyusong.com/archives/2656

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是使用Application.streamingAssetsPath的一些示例: 1. 加载音频文件: ```csharp string filePath = Path.Combine(Application.streamingAssetsPath, "audio.mp3"); using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(filePath, AudioType.MPEG)) { yield return www.SendWebRequest(); if (www.result == UnityWebRequest.Result.Success) { AudioClip audioClip = DownloadHandlerAudioClip.GetContent(www); // TODO: 播放音频文件 } else { Debug.LogError(www.error); } } ``` 2. 加载文本文件: ```csharp string filePath = Path.Combine(Application.streamingAssetsPath, "text.txt"); using (UnityWebRequest www = UnityWebRequest.Get(filePath)) { yield return www.SendWebRequest(); if (www.result == UnityWebRequest.Result.Success) { string text = www.downloadHandler.text; // TODO: 处理文本内容 } else { Debug.LogError(www.error); } } ``` 3. 加载图片: ```csharp string filePath = Path.Combine(Application.streamingAssetsPath, "image.png"); using (UnityWebRequest www = UnityWebRequestTexture.GetTexture(filePath)) { yield return www.SendWebRequest(); if (www.result == UnityWebRequest.Result.Success) { Texture2D texture = DownloadHandlerTexture.GetContent(www); // TODO: 显示图片或者将其作为贴图 } else { Debug.LogError(www.error); } } ``` 以上示例中,我们使用了Application.streamingAssetsPath获取StreamingAssets文件夹的路径,然后使用UnityWebRequest加载不同类型的文件。注意,StreamingAssets文件夹下的文件不会被压缩,因此可以直接使用UnityWebRequest加载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值