You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity AR开发:ARSubsystemManager上下文不存在错误的解决方法

解决ARSubsystemManager不存在的报错问题

这个报错其实是因为ARSubsystemManager在新版AR Foundation中已经被废弃并移除了——官方从AR Foundation 4.0版本开始,就用ARSession相关API替代了它的功能,所以你现在调用的是一个已经被移除的类,自然会报“当前上下文不存在”的错误。

下面是具体的修复步骤:

  1. 确认引用正确的命名空间
    首先在你的脚本顶部添加AR Foundation的命名空间,确保能访问到ARSession类:

    using UnityEngine.XR.ARFoundation;
    
  2. 替换为ARSession的状态监听事件
    把原来的ARSubsytemManager.systemStateChanged += OnStateChanged;替换成ARSession的stateChanged事件:

    ARSession.stateChanged += OnStateChanged;
    
  3. 调整回调方法的参数
    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;
            // 其他状态可按需扩展
        }
    }
    
  4. 确保场景中有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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:51:16