Unity AR开发:ARSubsystemManager上下文不存在错误的解决方法
解决ARSubsystemManager不存在的报错问题
这个报错其实是因为ARSubsystemManager在新版AR Foundation中已经被废弃并移除了——官方从AR Foundation 4.0版本开始,就用ARSession相关API替代了它的功能,所以你现在调用的是一个已经被移除的类,自然会报“当前上下文不存在”的错误。
下面是具体的修复步骤:
确认引用正确的命名空间
首先在你的脚本顶部添加AR Foundation的命名空间,确保能访问到ARSession类:using UnityEngine.XR.ARFoundation;替换为ARSession的状态监听事件
把原来的ARSubsytemManager.systemStateChanged += OnStateChanged;替换成ARSession的stateChanged事件:ARSession.stateChanged += OnStateChanged;调整回调方法的参数
ARSession的stateChanged事件传递的是ARSessionStateChangedEventArgs类型的参数,所以你的回调方法需要对应修改:private void OnStateChanged(ARSessionStateChangedEventArgs args) { // 根据当前AR会话状态做对应处理 switch (args.state) { case ARSessionState.Ready: Debug.Log("AR会话已准备就绪,可以开始追踪"); break; case ARSessionState.SessionInitializing: Debug.Log("AR会话正在初始化..."); break; case ARSessionState.SessionTracking: Debug.Log("AR对象追踪中"); break; case ARSessionState.NotTracking: Debug.Log("丢失追踪,请调整设备位置"); break; // 其他状态可按需扩展 } }确保场景中有ARSession组件
要让stateChanged事件正常触发,你的场景里必须存在ARSession组件——通常添加ARSessionOrigin时会自动附带ARSession,如果没有的话,你可以手动在Hierarchy面板右键选择XR > AR Session添加。
额外注意事项
- 检查Package Manager中AR Foundation和AR Core的版本是否兼容:两者版本不匹配也可能导致API异常,建议保持两者版本同步更新。
- 如果你非要用旧版的ARSubsystemManager,只能降级AR Foundation到3.x及以下版本,但官方已经停止维护旧版本,不推荐这么做。
内容的提问来源于stack exchange,提问作者Tiago Peres
相关产品推荐
相关产品推荐

