Unreal 4.26开发Oculus Quest游戏时Cache Achievements返回失败该如何处理?
问题修复方案
根因确认
你观察到的打包生成的临时配置中DefaultPlatformService被覆盖为GooglePlay就是成就功能失效的直接原因:Oculus Online Subsystem未被作为默认在线服务加载,所有成就相关的接口调用自然会失败。你之前可正常完成App Entitlement校验,是因为该校验直接调用Oculus SDK原生接口,不依赖OnlineSubsystem的服务加载逻辑,二者不冲突。
修复操作步骤
- 禁用Google Play相关插件
打开UE编辑器的「编辑>插件」页面,在在线平台分类下找到Google Play Games插件,取消勾选后重启编辑器,避免Google Play的构建逻辑强制覆盖平台服务配置。 - 修正Android平台配置优先级
打开项目目录下Config/Android/AndroidEngine.ini文件,补充以下配置,强制锁定平台服务映射:
配置中的[OnlineSubsystem] DefaultPlatformService=Oculus -PlatformServiceMappings=Android:GooglePlay +PlatformServiceMappings=Android:Oculus [OnlineSubsystemOculus] bEnabled=true OculusAppId=替换为你的实际Oculus App ID-操作符会先删除引擎默认的Android平台到GooglePlay的映射,+操作符新增Android平台到Oculus的映射,可避免构建过程中配置被默认规则覆盖。 - 清理旧构建缓存
打包前删除项目根目录下的Saved、Intermediate、Binaries/Android三个文件夹,防止旧的缓存配置被复用。 - 验证成就后台配置
确认Oculus开发者后台配置的成就ID,与项目中调用接口时传入的ID完全一致,且当前测试用的Oculus账号已被加入该应用的测试人员列表。
后续排查方案
如果完成以上操作后仍调用失败,打包时选择Development模式,连接设备后查看Logcat中LogOnline相关日志,可以明确获取接口调用失败的具体报错原因,比如权限不足、后台配置不匹配等。
内容的提问来源于stack exchange,提问作者RigBone
相关产品推荐
相关产品推荐

