我正在使用 Vuforia 版本 10.20.3(最新版本)构建 AR 应用程序。我必须使用 ITrackableEventHandler 的 TrackableBehaviour 来检测是否找到模型的状态...?但似乎 TrackableBehaviour 和 ITrackableEventHandler 在最新版本的 vuforia 中已被弃用。你能告诉我最新版本的 Vuforia 中它的替代品是什么吗...?
我已经尝试过以下代码行。,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;
public class MerajAudioPlayScript : MonoBehaviour, ITrackableEventHandler
{
protected TrackableBehaviour mTrackableBehaviour;
protected TrackableBehaviour.Status m_PreviousStatus;
protected TrackableBehaviour.Status m_NewStatus;
public AudioSource a;
void Start()
{
mTrackableBehaviour = GetComponent<TrackableBehaviour>();
if (mTrackableBehaviour)
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}
public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
{
m_PreviousStatus = previousStatus;
m_NewStatus = newStatus;
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName +
" " + mTrackableBehaviour.CurrentStatus +
" -- " + mTrackableBehaviour.CurrentStatusInfo);
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
OnTrackingFound();
}
else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
newStatus == TrackableBehaviour.Status.NO_POSE)
{
OnTrackingLost();
}
else
{
OnTrackingLost();
}
}
protected virtual void OnTrackingFound()
{
}
protected virtual void OnTrackingLost()
{
a.Stop();
}
}
并且它在 ITrackableEventHandler 和 TrackableBehaviour 上给出错误。 错误是., “CS0246:找不到类型或命名空间名称“ITrackableEventHandler”(您是否缺少 using 指令或程序集引用?)” 和 “CS0246:找不到类型或命名空间名称“ITrackableEventHandler”(您是否缺少 using 指令或程序集引用?)” 请告知这个的替代品...?
他们似乎基于此更改了 API: https://docs.unity3d.com/Packages/[电子邮件受保护]/api/Global%20Namespace.DefaultTrackableEventHandler.html
你会先改变第二个:
public class MerajAudioPlayScript : MonoBehaviour, ITrackableEventHandler
public class MerajAudioPlayScript : DefaultTrackableEventHandler
然后将所有继承的方法从 virtual 改为 override。