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

本文详细介绍了 Unity 中的资源管理,包括 Application.dataPath、persistentDataPath 等路径的使用,以及 AssetDatabase、Resources、AssetBundle 和 Addressable 四种资源加载方式。特别强调了 Addressable 系统的优势和使用方法,提供了一种更高效的内容管理和加载解决方案。
摘要由CSDN通过智能技术生成

本文介绍了 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
    评论
Unity 应用切换到后台时,应用会自动进入暂停状态以减少资源占用,这是 AndroidiOS 平台的默认行为。如果您希望 Unity 应用在后台继续运行,您可以采用以下方式: 1. 在 Unity 中设置应用后台运行权限 在 Unity 的 Player Settings 设置面板中可以设置应用后台运行权限。具体步骤如下: - 打开 Unity,选择 File > Build Settings 菜单。 - 在 Build Settings 窗口中选择您的目标平台,例如 AndroidiOS。 - 点击 Player Settings 按钮,打开 Player Settings 面板。 - 在 Player Settings 面板中,选择平台对应的选项卡,例如 AndroidiOS。 - 在选项卡中找到“Other Settings”部分,在“Identification”中将“Package Name”设置为自己应用的包名。 - 在“Other Settings”中找到“Configuration”部分,将“Scripting Backend”设置为“IL2CPP”。 - 在“Other Settings”中找到“Optimization”部分,将“API Compatibility Level”设置为“.NET 4.x”。 - 在“Other Settings”中找到“Configuration”部分,将“Minimum API Level”设置为“Android 4.4 'KitKat'”或者“iOS 9.0”。 - 在“Other Settings”中找到“Configuration”部分,将“Target API Level”设置为“Android 9.0 'Pie'”或者“iOS 13.0”。 - 在 Unity 中编写一个后台服务的脚本,并在 AndroidManifest.xml 或 Info.plist 文件中注册该服务。 2. 在 Unity 脚本中实现后台运行Unity 应用中,您可以编写一个后台服务的脚本,并在 AndroidManifest.xml 或 Info.plist 文件中注册该服务。该脚本可以使用 Unity 提供的 Application.runInBackground 方法来实现后台运行。例如: ```csharp void Start() { Application.runInBackground = true; } void Update() { // 在后台运行的代码 } ``` 需要注意的是,如果您的应用需要在后台运行,您需要在应用启动时启用后台运行,并在应用退出时停止后台运行。在 Android 平台上,您可以通过编写一个后台服务来实现这一点。在 iOS 平台上,您需要使用后台模式 API 来实现后台运行

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值