高通AR-关于切换相机跟踪图片的控制

来源:互联网 发布:淘宝互评后多久能看到 编辑:程序博客网 时间:2024/06/05 02:48
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">        当跟踪到图片,并且显示模型的时候,调用SetTrackerSwitch(false)函数,模型会保持显示,移开图片,不会对模型产生影响.此时如果调用SetTrackerSwitch(true),就会回到正常状态。</span>

    

using UnityEngine;using System.Collections;using Vuforia;public class MyTrackableEventHandler : MonoBehaviour, ITrackableEventHandler{    #region PRIVATE_MEMBER_VARIABLES    private TrackableBehaviour mTrackableBehaviour;    bool _trackerSwitch = true; //作为可否跟踪的开关.    //private ImageTargetAbstractBehaviour mImageTarget;    #endregion // PRIVATE_MEMBER_VARIABLES    #region UNTIY_MONOBEHAVIOUR_METHODS    void Start()    {        mTrackableBehaviour = GetComponent<TrackableBehaviour>();        if (mTrackableBehaviour)        {            mTrackableBehaviour.RegisterTrackableEventHandler(this);        }        //mImageTarget = GetComponent<ImageTargetAbstractBehaviour>();    }    #endregion // UNTIY_MONOBEHAVIOUR_METHODS    #region PUBLIC_METHODS    /// <summary>    /// 设置跟踪开关的状态    /// </summary>    /// <param name="sitchValue"></param>    public void SetTrackerSwitch(bool sitchValue)    {        _trackerSwitch = sitchValue;        Fix();    }    /// <summary>    /// 改变跟踪开关为相反值    /// </summary>    public void ChangeTrackerSwitch()    {        _trackerSwitch = !_trackerSwitch;        Fix();    }    /// <summary>    /// 跟踪开关改变后进行的调整.    /// </summary>    void Fix()    {        if(_trackerSwitch == true)        {            mTrackableBehaviour.enabled = true;            OnTrackingLost();        }        else        {            mTrackableBehaviour.enabled = false;         }    }    /// <summary>    /// Implementation of the ITrackableEventHandler function called when the    /// tracking state changes.    /// </summary>    public void OnTrackableStateChanged(                                    TrackableBehaviour.Status previousStatus,                                    TrackableBehaviour.Status newStatus)    {        if (newStatus == TrackableBehaviour.Status.DETECTED ||            newStatus == TrackableBehaviour.Status.TRACKED ||            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)        {            OnTrackingFound();        }        else        {            OnTrackingLost();        }    }    #endregion // PUBLIC_METHODS    #region PRIVATE_METHODS    private void OnTrackingFound()    {        if (_trackerSwitch == false) return;        Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);        Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);        // Enable rendering:        foreach (Renderer component in rendererComponents)        {            component.enabled = true;        }        // Enable colliders:        foreach (Collider component in colliderComponents)        {            component.enabled = true;        }        Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");    }    private void OnTrackingLost()    {        if (_trackerSwitch == false) return;        Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);        Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);        // Disable rendering:        foreach (Renderer component in rendererComponents)        {            component.enabled = false;        }        // Disable colliders:        foreach (Collider component in colliderComponents)        {            component.enabled = false;        }        Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");    }    #endregion // PRIVATE_METHODS}

0 0
原创粉丝点击