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

升级Vuforia至11.3.4结合ARFoundation时遇ARTrackablesChangedEventArgs找不到错误

Vuforia 11.3.4与ARFoundation 4.2.10集成时ARTrackablesChangedEventArgs<>无法解析的问题

Assets/Vuforia/Test/com.ptc.vuforia.engine@961073a467cc/Vuforia/Scripts/Internal/ARFoundationIntegration/ARFoundationFacade.cs(250,31): error CS0246: The type or namespace name 'ARTrackablesChangedEventArgs<>' could not be found (are you missing a using directive or an assembly reference?)

环境配置

  • Unity版本:2022.3.62f1
  • Vuforia:11.3.4
  • ARFoundation:4.2.10
  • ARSubsystems:4.2.10
  • Unity.XR.ARFoundation和Unity.XR.ARSubsystems已添加至VuforiaScripts.asmdef
  • 已清理并重建Library文件夹

触发错误的代码片段

void OnAnchorsChanged(ARTrackablesChangedEventArgs<ARAnchor> eventArgs)
{
    var removed = new List<Tuple<string, Transform>>();
    foreach (var (trackable, anchor) in eventArgs.removed)
    {
        var uuid = anchor.trackableId.ToString();
        if (mAnchors.ContainsKey(uuid))
        {
            removed.Add(Tuple.Create(uuid,anchor.transform));
            mAnchors.Remove(uuid);
        }
    }
    var updated = new List<Tuple<string, Transform>>();
    foreach (var anchor in eventArgs.updated)
    {
        var uuid = anchor.trackableId.ToString();
        if (mAnchors.ContainsKey(uuid))
        {
            updated.Add(Tuple.Create(uuid,anchor.transform));
        }
    }
    AnchorsChangedEvent.Invoke(removed, updated);
}

已尝试的解决措施

  • 确认Unity.XR.ARFoundation和Unity.XR.ARSubsystems已正确安装并引用
  • 验证ARTrackablesChangedEventArgs应存在于ARFoundation 4.2+版本中
  • 重建项目并清理Library文件夹
  • 添加必要的using指令:
    using UnityEngine.XR.ARFoundation;
    using UnityEngine.XR.ARSubsystems;
    

问题分析与解决方案

核心原因

Vuforia 11.x版本对ARFoundation有明确的兼容性要求,ARFoundation 4.2.x不在Vuforia 11.3.4的兼容列表内。Vuforia 11.x官方推荐搭配ARFoundation 5.x及以上版本(对应Unity 2021.3+),而ARFoundation 4.2.x的API结构与Vuforia 11.x的集成层不匹配,导致ARTrackablesChangedEventArgs<>这类泛型事件参数无法被正确识别。

另外需检查VuforiaScripts.asmdef的引用配置:确保添加的Unity.XR.ARFoundation和Unity.XR.ARSubsystems与项目实际安装的版本一致,避免版本不匹配引发的引用失效。

解决步骤

  1. 升级ARFoundation/ARSubsystems到兼容版本:
    根据Vuforia官方兼容性文档,Vuforia 11.3.4推荐搭配ARFoundation 5.1.0+。直接在Package Manager中升级ARFoundation和ARSubsystems到符合要求的版本,升级后重新生成项目文件。

  2. 修复asmdef引用(升级后仍有问题时):
    打开VuforiaScripts.asmdef文件,确认以下引用已正确添加且无版本冲突:

    • Unity.XR.ARFoundation
    • Unity.XR.ARSubsystems
      保存后让Unity重新编译脚本。
  3. 临时兼容方案(不推荐长期使用):
    若无法升级ARFoundation,可将ARTrackablesChangedEventArgs<ARAnchor>替换为ARFoundation 4.2.x对应的非泛型事件参数ARAnchorsChangedEventArgs,同时调整方法内逻辑适配旧API:

    void OnAnchorsChanged(ARAnchorsChangedEventArgs eventArgs)
    {
        var removed = new List<Tuple<string, Transform>>();
        foreach (var anchor in eventArgs.removed)
        {
            var uuid = anchor.trackableId.ToString();
            if (mAnchors.ContainsKey(uuid))
            {
                removed.Add(Tuple.Create(uuid, anchor.transform));
                mAnchors.Remove(uuid);
            }
        }
        var updated = new List<Tuple<string, Transform>>();
        foreach (var anchor in eventArgs.updated)
        {
            var uuid = anchor.trackableId.ToString();
            if (mAnchors.ContainsKey(uuid))
            {
                updated.Add(Tuple.Create(uuid, anchor.transform));
            }
        }
        AnchorsChangedEvent.Invoke(removed, updated);
    }
    

    注意:此方案仅为临时修复,长期仍建议升级到兼容版本以避免后续更多API兼容性问题。

额外注意事项

  • 升级ARFoundation后,需检查项目中其他依赖ARFoundation的脚本,确保适配新版本API变化。
  • 每次升级后务必清理Library文件夹并重新编译,避免缓存导致的异常。

内容的提问来源于stack exchange,提问作者Ooi Chia Hau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:53:11