unity android 在后台运行_Unity学习—资源管理概览

本文介绍了 Unity 常用四种默认路径,以及 AssetDataBase、Resources、AssetBundle 和目前最新的 Addressable 四种资源管理方式

文中所有 API 均以版本 2019.3 为准

本文原地址:Unity学习—资源管理概览

资源路径

Application.dataPath

官方文档

只读,Editor 可读写

游戏数据相对路径,即游戏安装路径,PC 上路径会使用 '/' 分割文件夹

  • Unity Editor: <项目根路径>/Assets
  • Mac player: <App 包路径>/Contents
  • iOS player: <App 包路径>/<AppName.app>/Data
  • Win/Linux player: <可执行数据文件夹路径>
  • WebGL: player data 文件的 绝对 url 地址 (不包含具体文件名)
  • Android: 一般为 APK 路径, 若使用 split binary build, 则为 OBB 路径
  • Windows Store Apps: player data 文件夹的绝对地址

Application.persistentDataPath

官方文档

可读写,用于持久化数据存储,在 iOS 和 Android 平台该路径指向设备的公共路径,该目录不会随 App 升级而删除,但可被用户直接删除

persistentDataPath的路径由Bundle Identifier生成的 GUID 组成,只要Bundle Identifier不变,路径不变

iOS 会自动将 persistentDataPath 路径下的文件备份到 iCloud

  • Windows Store Apps: %userprofile%AppDataLocalPackages<productname>LocalState
  • iOS: /var/mobile/Containers/Data/Application/<guid>/Documents
  • Android: /storage/emulated/0/Android/data/<packagename>/files 该路径由 android.content.Context.getExternalFilesDir 获得,部分机型该路径会指向 SD 卡
  • Mac: ~/Library/Application Support/<company name>/<product name> ,旧版本还可能为 ~/Library/Caches~/Library/Application Support/unity.company name.product name,Unity 会查询并使用以上路径中最早的路径

Application.streamingAssetsPath

官方文档 官方手册

只读,Editor 可读写

流数据存储的相对路径,该目录下 Asset 在 Unity 编译时不会被 Unity 打包,使其在运行时可直接通过路径获取,可将资源放入 Assets 目录下任何名为 StreamingAssets文件夹

StreamingAssets中资源可使用 I/O 读取,但 WebGL 和 Android 平台下该路径为 URL,不支持直接获取,因此需使用 UnityWebRequest获取。若其他平台使用 UnityWebRequest 获取,则需在路径前加上"file://" ,如 "file://" + Application.streamingAssetsPath + "/file.mp4"

  • Unity Editor, Windows, Linux players, PS4, Xbox One, Switch : Application.dataPath + "/StreamingAssets"
  • Mac: Application.dataPath + "/Resources/Data/StreamingAssets"
  • iOS: Application.dataPath + "/Raw"
  • Android: "jar:file://" + Application.dataPath + "!/assets" (压缩后的 APK/JAR 文件)

Application.temporaryCachePath

可读写,临时数据和缓存路径,应用更新或覆盖安装时不会被清除,手机空间不足时才可能会被系统清除

路径示例

0c5b5d3df1c6744144a22879c1144e78.png

读写权限说明

说明

资源加载

推荐官方教程

AssetDataBase

AssetDataBase 可在 Editor 环境下对项目 Asset 进行增删改查等操作(可实现与 Unity 编辑器顶部工具栏 Assets 选项下基本相同的功能),使用方法可参考官方手册 接口文档

Resources

接口文档

可在项目 Assets 目录下任意位置创建Resources文件夹,打包时 Unity 会整合所有位于Resources文件夹的 Asset 及其依赖,并生成一个只读的 resources.assets 资产文件,对于 Resources 目录中在游戏中被直接引用的资产,则会被另外打包到 sharedassets0.assets

Resources 最佳实践

官方的建议是不使用 Resources,有以下几点原因:

  1. Resources 文件夹会导致内存管理困难
  2. 不适当使用 Resources 文件夹会加长应用启动和编译时间,Resources 文件夹越多,Asset 管理越困难
  3. Resources 系统降低项目针对指定平台使用自定义内容的能力,并且无法实现增量更新(AssetBundle 是 Unity 针对不同设备提供特定内容的主要工具)

适合使用 Resources 的场景:

  1. 因其简单快速的特性
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值