Дополненная реальность с использованием Unity3D - PullRequest
0 голосов
/ 14 февраля 2019

Я работаю над приложением AR Android.Я закончил сборку приложения, но всякий раз, когда я его открываю, видео воспроизводится в фоновом режиме, прежде чем даже сканировать целевое изображение, но оно отображается только при сканировании изображения.Любая помощь или предложения по этому поводу?Код для DefaultTrackableEventHandler.cs:

using UnityEngine;
using Vuforia;
public class DefaultTrackableEventHandler : MonoBehaviour, ITrackableEventHandler
{
    protected TrackableBehaviour mTrackableBehaviour;
    protected TrackableBehaviour.Status m_PreviousStatus;
    protected TrackableBehaviour.Status m_NewStatus;
    protected virtual void Start()
    {
        mTrackableBehaviour = GetComponent<TrackableBehaviour>();
        if (mTrackableBehaviour)
            mTrackableBehaviour.RegisterTrackableEventHandler(this);
    }
   protected virtual void OnDestroy()
    {
        if (mTrackableBehaviour)
            mTrackableBehaviour.UnregisterTrackableEventHandler(this);
    }
    public void OnTrackableStateChanged(
        TrackableBehaviour.Status previousStatus,
        TrackableBehaviour.Status newStatus)
    {
        m_PreviousStatus = previousStatus;
        m_NewStatus = newStatus;
        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
            OnTrackingFound();
        }
        else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
                 newStatus == TrackableBehaviour.Status.NO_POSE)
        {
            Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
            OnTrackingLost();
        }
        else
        {
                       OnTrackingLost();
        }
    }
   protected virtual void OnTrackingFound()
    {
        var rendererComponents = GetComponentsInChildren<Renderer>(true);
        var colliderComponents = GetComponentsInChildren<Collider>(true);
        var canvasComponents = GetComponentsInChildren<Canvas>(true);
        foreach (var component in rendererComponents)
            component.enabled = true;
               foreach (var component in colliderComponents)
            component.enabled = true;
             foreach (var component in canvasComponents)
            component.enabled = true;
    }
    protected virtual void OnTrackingLost()
    {
        var rendererComponents = GetComponentsInChildren<Renderer>(true);
        var colliderComponents = GetComponentsInChildren<Collider>(true);
        var canvasComponents = GetComponentsInChildren<Canvas>(true);
               foreach (var component in rendererComponents)
            component.enabled = false;
                foreach (var component in colliderComponents)
            component.enabled = false;
                foreach (var component in canvasComponents)
            component.enabled = false;
    }
}

1 Ответ

0 голосов
/ 13 марта 2019

Если вы используете проверку Unity Videoplayer, если вы отключили опцию Loop в представлении Video Player Inspector.

Во-вторых, игровой объект, включающий компонент VideoPlayer, находится как дочерний элемент ImageTarget gameobject?

В-третьих, в OnTrackingFound () вы должны управлять воспроизведением, а в OnTrackingLost () - остановкой для VideoPlayer.

...