Vuforia 10.20.3中TrackableBehaviour与ITrackableEventHandler替代方案咨询
Vuforia 10.20.3 追踪状态检测替代方案
在Vuforia 10.20.3版本中,TrackableBehaviour和ITrackableEventHandler已被弃用并移除,导致原有代码出现以下编译错误:
CS0246: The type or namespace name 'ITrackableEventHandler' could not be found (are you missing a using directive or an assembly reference?) CS0246: The type or namespace name 'TrackableBehaviour' could not be found (are you missing a using directive or an assembly reference?)
以下是适配Vuforia 10.20.3的替代实现:
using System.Collections; using System.Collections.Generic; using UnityEngine; using Vuforia; public class MerajAudioPlayScript : MonoBehaviour { protected ObserverBehaviour mObserverBehaviour; protected ObserverBehaviour.Status mPreviousStatus; protected ObserverBehaviour.Status mNewStatus; public AudioSource a; void Start() { mObserverBehaviour = GetComponent<ObserverBehaviour>(); if (mObserverBehaviour != null) mObserverBehaviour.StatusChanged += OnObserverStatusChanged; } private void OnObserverStatusChanged(ObserverBehaviour.StatusChangedData data) { mPreviousStatus = data.PreviousStatus; mNewStatus = data.NewStatus; Debug.Log($"Trackable {mObserverBehaviour.TrackableName} {mNewStatus} -- {mObserverBehaviour.CurrentStatusInfo}"); if (mNewStatus == ObserverBehaviour.Status.DETECTED || mNewStatus == ObserverBehaviour.Status.TRACKED || mNewStatus == ObserverBehaviour.Status.EXTENDED_TRACKED) { OnTrackingFound(); } else if (mPreviousStatus == ObserverBehaviour.Status.TRACKED && mNewStatus == ObserverBehaviour.Status.NO_POSE) { OnTrackingLost(); } else { OnTrackingLost(); } } protected virtual void OnTrackingFound() { // 识别到目标时的逻辑,比如播放音频 a.Play(); } protected virtual void OnTrackingLost() { a.Stop(); } private void OnDestroy() { // 取消事件订阅,避免内存泄漏 if (mObserverBehaviour != null) mObserverBehaviour.StatusChanged -= OnObserverStatusChanged; } }
关键变化说明
- 用
ObserverBehaviour替代原有的TrackableBehaviour,它是Vuforia 10+中所有可追踪对象(图像、模型等)的基类 - 不再实现
ITrackableEventHandler接口,改为通过订阅StatusChanged事件监听状态变化 - 状态枚举使用
ObserverBehaviour.Status,原有状态值(如DETECTED、TRACKED、NO_POSE等)保持兼容 - 新增
OnDestroy方法取消事件订阅,避免内存泄漏
内容的提问来源于stack exchange,提问作者Meraj Aslam
相关产品推荐
相关产品推荐

