Unity路径的相关总结
Unity中的路径变量
变量 | 属性 | 使用情景 | 其他说明 |
---|---|---|---|
Application.dataPath | 只读 | 应用数据文件夹的路径 | |
Application.streamingAssetsPath | 只读 | 资源跟随App发布时使用 | Android下不存在物理文件,不要用System.IO.File 访问 |
Application.temporaryCachePath | 读写 | 下载临时资源时使用 | 设备的临时数据缓存目录。存储空间不足时,会被操作系统清理 |
Application.persistentDataPath | 读写 | 资源热更新时使用 | iOS/Android设备中的持久化数据存储目录,可以在此路径下存储一些持久化的数据文件,该目录下的文件不会因为App升级而删除。iOS下注意关闭 iClound 同步,否则可能提审被拒 |
不同平台下的路径
路径变量 | Windows | Android | iOS |
---|---|---|---|
Application.dataPath | 应用的路径/appname _Data | /data/app/package name-1/base.apk | /var/containers/Bundle/Application/app sandbox/xxx.app/Data |
Application.streamingAssetsPath | 应用路径/appname _Data /StreamingAssets | jar:file:///data/app/package name-1/base.apk!/assets | /var/containers/Bundle/Application/app sandbox/test.app/Data/Raw |
Application.temporaryCachePath | C:\Users\username\AppData\Local\Temp\company name\product name | Internal Only: /data/user/0/package name/cache External(SDCard): /storage/emulated/0/Android/data/package name/cache | /var/mobile/Containers/Data/Application/app sandbox/Library/Caches |
Application.persistentDataPath | C:\Users\username\AppData\LocalLow\company name\product name | Internal Only: /data/user/0/ package name/files External(SDCard): /storage/emulated/0/Android/data/package name/files | /var/mobile/Containers/Data/Application/app sandbox/Documents |
说明:Android平台下的路径会根据SD卡的访问权限不同而不同。至于iOS有没有类似的情况,由于没有相关设备,暂时没有测试。有条件的朋友可以帮我测试一下,我用5.3.4f1版本的Unity写了个简单的测试程序,项目链接:http://pan.baidu.com/s/1gfqmORh。 欢迎测试反馈,不胜感激!
常用工具方法
1 | /// <summary> |
Resources VS. StreamingAssets
- Resources文件夹
Resources文件夹是一个只读的文件夹,通过Resources.Load()来读取对象。因为这个文件夹下的所有资源都可以运行时来加载,所以Resources文件夹下的所有东西都会被无条件的打到发布包中。建议这个文件夹下只放Prefab或者一些Object对象,因为Prefab会自动过滤掉对象上不需要的资源。举个例子我把模型文件还有贴图文件都放在了Resources文件夹下,但是我有两张贴图是没有在模型上用的,那么此时这两张没用的贴图也会被打包到发布包中。假如这里我用Prefab,那么Prefab会自动过滤到这两张不被用的贴图,这样发布包就会小一些了。
- StreamingAssets
StreamingAssets文件夹也是一个只读的文件夹,但是它和Resources有点区别,Resources文件夹下的资源会进行一次压缩,而且也会加密,不使用点特殊办法是拿不到原始资源的。但是StreamingAssets文件夹就不一样了,它下面的所有资源不会被加密,然后是原封不动的打包到发布包中,这样很容易就拿到里面的文件。所以StreamingAssets适合放一些二进制文件,而Resources更适合放一些GameObject和Object文件。StreamingAssets 只能用过www类来读取!!
参考文献
- Unity3D各平台Application.xxxPath的路径
- Unity3D移动平台动态读取外部文件全解析
- Unity各种路径
- Unity官方文档