Unity加载资源时的常用路径或文件夹

加载资源或者下载资源时的常用路径,我们平常开发下用的是编辑器下的路径。

编辑器下使用的资源路径和Windows端打包后并没有什么区别。你在编辑器下写的资源路径代码,大概率是可以在Windows下无缝运行的,重点是移动端打包后使用的资源路径,和Windows的资源路径有所不同。

顺带说明,路径全部使用'/'作为分隔符,移动端只支持'/'。

一、先介绍下这几个路径和文件夹。
1.1 Application.dataPath路径

这个属性返回的是程序的数据文件所在文件夹的路径。在编辑器下为Assets文件夹。

1.2 Application.streamingAssetsPath路径

这个属性返回流数据的缓存目录。使用前需要在Unity工程的Assets目录下起一个名为“StreamingAssets”的文件夹,然后用Application.streamingAssetsPath访问,这个文件夹中的资源在打包时会原封不动的打包进去,不会压缩加密。

1.3 Application.persistentDataPath路径

这个属性返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。在开发阶段时使用这个路径没有意义。

1.4 Application.temporaryCachePath路径

此属性用于返回一个临时数据的缓冲目录。

1.5 Resources文件夹

此文件夹下的资源必须通过Resources.Load()加载。路径直接从Resources下开始,打包后资源会被压缩加密,只支持读文件,无法写入。

二、哪些资源会被打包

在说不同平台路径之前要先明白一件事,Unity在打包发布时,会将Assets文件夹里面的文件打包,但并不是Assets所有的资源文件都会被打包,编译后代码不提,这个是肯定会被打包,其次除代码以外的各类资源,只有Resources下的和StreamingAssets两个文件夹下的资源才会被打包。

顺带提一下,在开发阶段使用AB包,如果只是做测试,那么AB包的位置是可以随便打的。如果想要随包体打包出去,那么就放在StreamingAssets文件夹下。然后发布后再移动到persistentDataPath。

三、几个平台下的Application路径区别
3.1 Windows平台

Windows平台这几个Application路径都可读可写。没什么限制。用啥API读写都可以。

3.2 Android平台

这个平台和Windows不一样,对于文件的读写有所限制。

dataPath是app安装包路径,如果你在打包到Windows平台后仍然是可以随便读写,但Android不行。不支持读写。

streamingAssetsPath,在Android下,该目录下的文件被压缩到一个单独的.jar文件(类似于zip压缩文件),只可通过WWW或者新版UnityWebRequest读取压缩文件中的数据。写入需要通过第三方压缩或者解压类库实现,不能简简单单的通过IO库完成。

persistentDataPath路径,当应用程序初次安装到IOS和Android平台,这个路径会指向一个公共的路径,并且不能跨App访问。应用更新、覆盖安装时,这里的数据都不会被清除。可读可写。

temporaryCachePath,当应用程序初次安装到IOS和Android平台,这个路径也会指向一个公共的路径。应用更新、覆盖安装时,这里的数据都不会被清除,手机空间不足时才可能会被系统清除。可读可写。

3.3 IOS平台

IOS除了dataPath不能写入,其他和Windows平台一致。

四、总结

总之就是推荐使用persistDataPath,每个平台都是可读可写。streamingAssets在安卓平台必须使用UnityWebRequest等类读取。DataPath在安卓平台无法读写,不推荐使用。

具体的各平台路径可以参考这位的博客(73条消息) Unity 各平台Application.xxxPath的路径_香草萌萌茶的博客-CSDN博客_application.datapath的路径

你可能感兴趣的:(unity,游戏引擎)