使用Unity3D增强现实

问题描述 投票:0回答:1

我正在研究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;
    }
}
c# unity3d vuforia
1个回答
1
投票

如果您使用Unity Videoplayer检查是否在Video Player Inspector视图中禁用了Loop选项。

其次,包含视频播放器组件的游戏对象位于Image Target游戏对象的子级?

第三,在OnTrackingFound()中你必须管理Play,并在OnTrackingLost()中关于VideoPlayer的Stop。

© www.soinside.com 2019 - 2024. All rights reserved.