前言
我们在用Unity开发的过程中经常会遇到从本地加载资源以及保存资源到本地这样的需求,Unity也提供了集中本地存放资源的路径。同样都是存放资源文件的地方,那它们究竟有什么差别呢?
你将学到什么?
1. Unity有哪些路径来存放资源文件
2. Unity存放资源的各种路径在各个平台上的位置
一. 各种存放路径
Resources
Project目录下以“Resources”命名的文件夹,“Resources”属于Unity中特殊的文件夹命名。你可以有多个Resources文件夹,不管是否是顶级文件夹都可以。
1. 里面的资源会全部打包至最终的发布文件中,无论是否被引用过,所以如果从未被用到过的文件放到这里会增加发布文件的大小。
2. 资源会被压缩,最终编译会被合并到一个可序列文件中,这个文件包括metadata和索引信息,基本上和AssetBundle类似。
3. Resources系统的初始化阶段是不可跳过的,一般会在程序显示Splash界面的时候进行初始化。
单机版游戏的资源文件大多都会存放到这个目录下。
比方说游戏中有各种小鸟,游戏中会随机取出几种小鸟放到场景中,这样的小鸟资源就会放到Resource目录下。
Application.streamingAssetsPath(可读)
Project目录下以“StreamingAssets”命名的文件夹,“StreamingAssets”同样属于Unity中特殊的文件夹命名。该文件夹中的资源将在游戏安装时原样拷贝到目标设备相应的文件夹下。
在Editor环境下,实际是Assets/StreamingAssets 这个文件夹,不过在发布到各个平台下,会被迁移到各个平台的相应目录。
存放在该文件夹下的资源不会被压缩加密,所以游戏相关的配置如果放到这个目录最好采用二进制文件的形式。
游戏中的一些本地化配置文件都会存放子这个目录下
Application.persistentDataPath(可读写)
Project中没有相应的文件夹目录,是在运行时环境下的一个目录。
存放服务器的资源可以下载到这个目录下,有个重要功能就是IOS上该目录下的东西可以被iCloud自动备份,比如:玩家的金钱数量,等级等属性数据,这些数据一旦丢失是不可能恢复的!
Application.temporaryCachePath(可读写)
Project中没有相应的文件夹目录,是在运行时环境下的一个目录。
用于存储资源数据,比如:图集,音乐,场景,预制件,这些可以通过下载获得的东西;而且可以通过Md5码比对下载更新新的资源!
二. 各平台上的具体位置
了解个平台路径的具体位置,我们在发现问题或测试的时候可以找到相应的文件查看,发现问题。
iOS:
Application.dataPath /var/containers/Bundle/Application/app sandbox/xxx.app/Data
Application.streamingAssetsPath /var/containers/Bundle/Application/app sandbox/xxx.app/Data/Raw
Application.temporaryCachePath /var/mobile/Containers/Data/Application/app sandbox/Library/Caches
Application.persistentDataPath /var/mobile/Containers/Data/Application/app sandbox/Documents
Android:
Application.dataPath /data/app/package name-1/xxx.apk
Application.streamingAssetsPath jar:file:///data/app/package name-1/xxx.apk!/assets
Application.temporaryCachePath /storage/emulated/0/Android/data/package name/cache
Application.persistentDataPath /storage/emulated/0/Android/data/package name/files
Windows:
Application.dataPath: 应用的appname_Data/
Application.streamingAssetsPath: 应用的appname_Data/StreamingAssets
Application.temporaryCachePath: C:\Users\username\AppData\Local\Temp\company name\product name
Application.persistentDataPath: C:\Users\username\AppData\LocalLow\company name\product nam