Unity 实用小技能学习
【100个 Unity实用技能】| Unity中常用的几种路径 分析
在Unity中有很多种路径,尤其是在不同的平台上,同一种路径的写法可能最终是不一样的。
本文就来总结一下Unity中的几种路径,以及简单的使用方法。
路径 | 含义 | 读写权限 | 是否在包内 |
---|---|---|---|
Application.dataPath | Assets目录 | 只读 | 是 |
Application.streamingAssetsPath | Assets/流资源目录 | 只读 | 是 |
Application.persistentDataPath | 持久化目录 | 可读可写 | 否 |
Application.temporaryCachePath | 临时缓存目录 | 只读 | 否 |
Resources | 包内相对路径/Resources | 只读 | 是 |
根据不同的情况可以选择不同的路径使用,本文主要是总结一下各路径的含义以及在不同平台的返回值
仅供参考,收藏使用更佳~
1.Application.dataPath
此路径在Unity工程目录下。
特点 通过这个路径可以访问项目中任何文件夹中的资源,不过只能在PC端使用,移动端是没有访问权限的
不同平台的实际路径:
平台 | 路径 |
---|---|
Unity Editor | <项目文件夹路径>/Assets |
Android平台 | /data/app/xxx.xxx.xxx.apk。通常它直接指向 APK,如果正在运行拆分二进制构建,则它指向 OBB。 |
IOS平台 | <播放器应用程序包的路径>/< AppName.app > /Data |
Windows | <播放器应用程序包的路径>/Assets |
Mac | <播放器应用程序包的路径>/Contents |
WebGL | 播放器数据文件文件夹的绝对 url(没有实际数据文件名) |
2.Application.streamingAssetsPath
StreamingAsset文件夹中的内容则会原封不动的打入包中,因此StreamingAssets主要用来存放一些二进制文件。
在任何平台中总可以统一使用Application.streamingAssetsPath 属性来获得这一文件夹路径
特点: PC端可读写,移动端只读不可写。
由于在Android中,StreamingAssets中的文件包含在一个.jar压缩文件中,所以移动端时只能用过UnityWebRequest类来读取,PC则可以使用IO的File读取。
不同平台的实际路径:
平台 | 路径 |
---|---|
Unity Editor | <项目文件夹路径>/StreamingAssets |
Android平台 | jar:file:///data/app/package name-1/base.apk!/assets |
IOS平台 | /var/containers/Bundle/Application/app sandbox/test.app/Data/Raw |
Windows | <播放器应用程序包的路径>/Assets/StreamingAssets |
Mac | <播放器应用程序包的路径>/Assets/StreamingAssets |
WebGL | <播放器应用程序包的路径>/Assets/StreamingAssets |
3.Application.persistentDataPath
一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。 这个路径可读、可写,一般网络下载的资源都存在这个路径。 同时在使用热更新的时候可使用的路径,推荐使用。
特点:
- 可读写,只能运行时才能写入或者读取。 无法将数据提前存入这个路径
- 无内容限制。可从 StreamingAsset 中读取二进制文件或者从 AssetBundle 读取文件来写入 PersistentDataPath 中
- 可使用UnityWebRequest类来读取 也可以用File类API(如File.ReadAllText)读写PersistentDataPath文件夹中的文件(安卓下唯一可以用File类的路径)
不同平台的实际路径:
平台 | 路径 |
---|---|
Unity Editor | %userprofile%AppDataLocalLow<companyname><productname> |
Android平台 | /storage/emulated/0/Android/data//files |
IOS平台 | /var/mobile/Containers/Data/Application//Documents |
Windows | %userprofile%AppDataLocalLow<companyname><productname> |
Mac | ~/Library/Application Support/unity.company name.product name |
WebGL | /idbfs/ |
4.Application.temporaryCachePath
此属性返回一个临时数据的缓存目录,跟Application.persistentDataPath类似,但是在IOS上不能被自动备份。一般情况下不会使用此路径。
不同平台的实际路径:
平台 | 路径 |
---|---|
Unity Editor | %userprofile%AppDataLocalTemp |
Android平台 | /storage/emulated/0/Android/data//cache |
IOS平台 | /var/mobile/Containers/Data/Application/app sandbox/Library/Caches |
Windows | %userprofile%AppDataLocalTemp |
Mac | /var/xxx/xxx/xxx/T/ |
WebGL | 未找到 |
5.Resources
Resources文件夹是Unity里自动识别的一种文件夹,可在Unity编辑器的Project窗口里创建,并将资源放置在里面。
是作为一个Unity的保留文件夹出现的,Resources文件夹下的资源不管是否有用,全部会打包进.apk或者.ipa,并且打包时会将里面的资源压缩处理
特点:
- 只读路径,不能动态修改,一般用于存放一下固定不更改的资源。
- 放在这里文件夹中的资源在打包的时候会压缩后全部打包。
- 可以通过Resources.Load(“path”);进行动态加载
这是MAC平台下的几种路径,可以作为示例看一下。 代码:
代码语言:javascript复制 void Start()
{
Debug.Log("路径总结。1.Application.dataPath:||" Application.dataPath);
Debug.Log("路径总结。2.Application.streamingAssetsPath:||" Application.streamingAssetsPath);
Debug.Log("路径总结。3.Application.persistentDataPath||" Application.persistentDataPath);
Debug.Log("路径总结。4.Application.temporaryCachePath:||" Application.temporaryCachePath);
}