Unity中几个特殊路径在各个平台的访问方式

时间:2023-03-09 08:19:24
Unity中几个特殊路径在各个平台的访问方式

1、文件路径
Resources:
Unity在发布成移动端项目后,其他文件路径都将不存在,但是如果有一些必要的资源,可以放在Resources文件夹下,因为这个文件夹下的所有资源是由Unity内部进行
调用,当发布成移动端后,该路径将不存在,所以不可写也不可读,只能用Unity封装的方法进行该路径下的资源加载。
StreamingAssets:
该路径会在发布工程时,里面的资源会原封不动的进行打包到包体中,不过里面的资源只能采用WWW的方式进行读取,所以访问速度有限,或者采用AssetBundle的方式。
但是这样都会导致最后发布的包体体积过大,且该路径下的资源可读不可写。
在c#中使用Directory.GetFiles获取文件夹时,在Application.persistentDataPath路径下,直接获取会出现路径为空异常。
且在使用Unity中封装好的Application.streamingAssetsPath时,安卓路径在前面不需要加"jar:file///",因为其自己已经自带了,所以再加的话会访问不到,或者可以
使用"jar:file://"+Application.dataPath+"!/assets/"
2、出现路径禁止访问BUG
我在发布到Android后,利用Application.persistentDataPath无法访问到相对应的app安装路径,出现unauthorizedaccessexception Access to the path "/jar:file:"is denied
问题。最后解决发现是路径前面的协议写错了,
要是访问apk内部资源应该在前面加"jar:file://",否则的话就是加"file://"。

Unity中几个特殊路径的说明:
dataPath :返回程序的数据文件所在的文件夹的路径(只读)。返回路径为相对路径,一般是相对于程序安装目录的位置。不同游戏平台的数据文件保存路径不同。

StreamingAssetsPath: 此属性用于返回数据流的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径。(只读)

PersistentDataPath:返回一个持久化数据存储目录的路径(可读可写),可以在此路径下存储一些持久化的数据文件。对应同一平台,在不同程序中调用此属性时,其返回值是相同的,但是在不同的运行平台下,其返回值会不一样。

temporaryCachePath:此属性用于返回一个临时数据的缓冲目录(可读可写)。对于同一平台,在不同程序中调用此属性时,其返回值是相同的,但是在不同的运行平台下,其返回值是不一样的。

persistentDataPath和temporaryCachePath的返回值一般是程序所在平台的固定位置,适合程序在运行过程中产生的数据文件。

IOS:

Application.dataPath :            Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data

Application.streamingAssetsPath :     Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw

Application.persistentDataPath :       Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents

Application.temporaryCachePath :    Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Library/Caches

Android:

Application.dataPath :                 /data/app/xxx.xxx.xxx.apk

Application.streamingAssetsPath :     jar:file:///data/app/xxx.xxx.xxx.apk/!/assets

Application.persistentDataPath :       /data/data/xxx.xxx.xxx/files

Application.temporaryCachePath :    /data/data/xxx.xxx.xxx/cache

Windows:

Application.dataPath :                      /Assets

Application.streamingAssetsPath :    /Assets/StreamingAssets

Application.persistentDataPath :      C:/Users/xxxx/AppData/LocalLow/CompanyName/ProductName

Application.temporaryCachePath :   C:/Users/xxxx/AppData/Local/Temp/CompanyName/ProductName

Mac:

Application.dataPath :                      /Assets

Application.streamingAssetsPath :    /Assets/StreamingAssets

Application.persistentDataPath :      /Users/xxxx/Library/Caches/CompanyName/Product Name

Application.temporaryCachePath :   /var/folders/57/6b4_9w8113x2fsmzx_yhrhvh0000gn/T/CompanyName/Product Name