TrackableBehaviour and ITrackableEventHandler is not working in Vuforia 10.20.3

60 Views Asked by At

I'm building an AR app with Vuforia version 10.20.3(latest version). I have to use the TrackableBehaviour of ITrackableEventHandler to detect the status of model to be found or not... ? But it seems like the TrackableBehaviour and ITrackableEventHandler is deppreciated in this latest version of vuforia. Can you please tell what is the replacement of it in latest version of Vuforia...?

I have tried the following lines of code.,

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();
    }
}

And It is giving errors on ITrackableEventHandler and TrackableBehaviour. The errors are., "CS0246: The type or namespace name 'ITrackableEventHandler' could not be found (are you missing a using directive or an assembly reference?)" and "CS0246: The type or namespace name 'ITrackableEventHandler' could not be found (are you missing a using directive or an assembly reference?)" Please tell the replacement of this...?

1

There are 1 best solutions below

2
Everts On

It appears they changed the API based on this : https://docs.unity3d.com/Packages/[email protected]/api/Global%20Namespace.DefaultTrackableEventHandler.html

You'd change first for second:

 public class MerajAudioPlayScript : MonoBehaviour, ITrackableEventHandler

 public class MerajAudioPlayScript : DefaultTrackableEventHandler

then all inherited methods from virtual to override.