Unity 6中Addressables结合Play Asset Delivery(Fast-Follow)离线无法加载已下载场景的问题求助
Unity 6中Addressables结合Play Asset Delivery(Fast-Follow)离线无法加载已下载场景的问题求助
大家好,我最近在Unity 6项目里结合Addressables和Play Asset Delivery(PAD)开发时碰到了一个头疼的问题,想向各位大佬求助:
环境信息
- Unity版本:6000.0.47 (Unity 6)
- Addressables版本:Unity 6自带的最新版本
- 平台:Android
- Play Asset Delivery配置:启用了Fast Follow和On Demand分组
- 分发方式:上传到Google Play内部测试渠道
问题概述
我把名为MENU的分组设置为Fast Follow,里面包含了MainMenuScene这个未打包进基础APK的场景,通过以下代码加载:
Addressables.LoadSceneAsync("MainMenuScene");
在线状态下首次安装后加载完全正常,但离线模式下,哪怕已经确认Fast Follow包已经下载完成,加载场景还是会失败,抛出的异常信息如下:
RemoteProviderException: Unable to load asset bundle from location...
AssetBundleProvider - Unable to load from url...
Asset pack not found or remote file missing
已完成的验证与尝试
我已经做了不少排查工作,整理如下:
- 按照Unity官方指引,在PAD设置里将Catalog标记为Local
- 确保场景加载前Addressables已经完成初始化
- 确认Play Asset Pack的状态为Completed:
var stateRequest = AndroidAssetPacks.GetAssetPackStateAsync(new string[] { "MENU" }); - 调用
AndroidAssetPacks.GetAssetPackPath("MENU")能获取到正确的资产包目录路径,哪怕离线状态下日志里也能正常打印出这个路径 - 基础APK中包含一个加载场景,专门用来加载MENU分组里的MainMenuScene
同时我也尝试了一些解决方法,但都没有效果:
- 调用
Addressables.DownloadDependenciesAsync("MainMenuScene"):无论是传入场景名还是分组名,都会抛出“key not found”错误 - 加载前再次检查AssetPackState,离线时状态显示为Unknown或NetworkError
- 调用
Addressables.Release或者强制重新执行InitializeAsync都没有改善问题 - 发现
/Android/data/<package>/assetpacks/...路径下看不到完整的bundle文件,要么是空的,只有部分目录结构
我怀疑的问题点
- Unity可能仍将已下载的Fast Follow包当作远程资源处理,哪怕已经确认包存在本地
- 离线加载场景时没有正确的本地 fallback 路径,虽然
GetAssetPackPath能返回本地路径,但Addressables并没有使用这个路径 - Addressables加载场景的逻辑可能意外绕过了PAD的本地缓存机制
具体疑问
想请教各位大佬几个问题:
- 在首次成功加载后,离线模式下
Addressables.LoadSceneAsync是否兼容PAD的Fast Follow分组? - 为什么已经通过
GetAssetPackPath()确认了资产包路径,但场景bundle还是无法被读取? - 是否需要手动做路径映射或者重定向,来告诉Addressables去使用PAD的本地文件夹?
- 有没有推荐的 fallback 方案,用来离线加载Fast Follow分组里的场景?
- 为什么在线时场景能正常加载,但
DownloadDependenciesAsync("MainMenuScene")会抛出key not found错误?
我的测试流程
- 将构建好的包上传到Play Console内部测试渠道
- 成功安装应用后,联网启动一次,确认Fast Follow的MENU包已经下载完成
- 杀掉应用进程,关闭设备网络,重新启动应用,此时加载场景失败
内容来源于stack exchange
相关产品推荐
相关产品推荐

