前言
Unity下有Application.dataPath,Application.streamingAssetsPath,Application.persistentDataPath,Application.temporaryCachePath等路径。我们经常要去读写这些路径,或者进到目录里去查看存在什么文件。所以下面主要从 读写权限 和 路径 来解析这些路径名。
权限
路径 | 意思 | 读写权限 | 是否在包内 |
---|---|---|---|
Application.dataPath | Assets目录 | 只读 | 是 |
Application.streamingAssetsPath | Assets/流资源目录 | 只读 | 是 |
Application.persistentDataPath | 持久化目录 | 可读可写 | 否 |
Application.temporaryCachePath | 临时缓存目录 | 只读 | 否 |
解析
基于只有Application.persistentDataPath拥有可读可写的特性,一般存储东西或者下载热更新文件都是放在这个目录里面的。
我们平常会把一些资源文件先放在Application.streamingAssetsPath里,安装后再拷贝进Application.persistentDataPath里,为什么不直接放进Application.persistentDataPath里呢。
因为Application.persistentDataPath,它的路径不在包内,得安装后才存在,所以得这样做。
各平台下的路径
windows
路径 | 路径格式 | 路径解析 | 路径举例 |
---|---|---|---|
Application.dataPath | <path to project folder>/Assets | 项目的Assets目录 | F:/Learn/TurnBaseDemo/Assets |
Application.streamingAssetsPath | 编辑器下:<path to project folder>/Assets/StreamingAssets PC包:{项目输出路径}/{ProductName_Data/StreamingAssets} | 项目的Assets/StreamingAssets 注意:编辑器和PC包不一样 | F:/Learn/TurnBaseDemo/Assets/StreamingAssets |
Application.persistentDataPath | %userprofile%\AppData\LocalLow\<companyname>\<productname> | %userprofile% 一般等于C:/Users/PC,companyname=公司名字,productname=产品名字 | C:/Users/PC/AppData/LocalLow/super41/TurnBaseDemo |
Application.temporaryCachePath | %userprofile%\AppData\Local\Temp<companyname><productname> | 同上 | C:/Users/PC/AppData/Local/Temp/super41/TurnBaseDemo |
安卓
路径 | 路径格式 | 路径解析 |
---|---|---|
Application.dataPath | /data/app/<packageName>-xxxxxx==/base.apk | 在压缩包里面 |
Application.streamingAssetsPath | jar:file:///data/app/<packageName>-xxxxxx==/base.apk !/assets | 使用UnityWebRequest 或www来访问该目录的资源 |
Application.persistentDataPath | /storage/emulated/0/Android/data/<packagename>/files | packagename = 包名 |
Application.temporaryCachePath | /storage/emulated/0/Android/data/<packagename>/cache | 同上 |
解析
一般我们用 文件管理器 或 adb命令 进对应的路径查看一些文件有没存在。这里比较有意义的路径是Application.persistentDataPath和Application.temporaryCachePath,因为这两个路径能进去查看,
另外两个没Root权限一般访问不了,也不需要访问,一般都是代码上的访问。
IOS
路径 | 路径格式 | 路径解析 |
---|---|---|
Application.dataPath | /var/containers/Bundle/Application/app sandbox/xxx.app/Data | app sandbox 代指应用程序沙盒 |
Application.streamingAssetsPath | /var/containers/Bundle/Application/app sandbox/xxx.app/Data/Raw | 同上 |
Application.persistentDataPath | /var/mobile/Containers/Data/Application/app sandbox/Documents | 同上 |
Application.temporaryCachePath | /var/mobile/Containers/Data/Application/app sandbox/Library/Caches | 同上 |