Vuforia功能记录(四) ------ 解决Vuforia+Unity自动打开摄像头的三种方法

  • 两种方法 : http://www.arvrschool.com/read-7349
  • 使用的方法 : https://www.cnblogs.com/shenlaiyaoshi/p/8414197.html

1.删除原MainCamera,在场景中新建一个ARCamera,取消勾选VuforiaBehaviour脚本。

2.使用以下脚本,这个测试有效,不过我还需要跳转到vuforia识别场景打开摄像头,所以并未使用

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using Vuforia; 

public class DisableVuforia : MonoBehaviour
{

    // Use this for initialization 
    void Start()
    {

    }

    // Update is called once per frame 
    void Update()
    {

        if (GetComponent<VuforiaBehaviour>().enabled)
        {
            GetComponent<VuforiaBehaviour>().enabled = false;
        }

        if (GetComponent<VideoBackgroundBehaviour>().enabled)
        {
            GetComponent<VideoBackgroundBehaviour>().enabled = false;
        }

        GetComponent<Camera>().clearFlags = CameraClearFlags.Skybox;
    }
}

3.已封装好的方法

// 关闭相机
public void CloseCameraDevice ()
{
    CameraDevice.Instance.Stop();
    CameraDevice.Instance.Deinit();
}
 
// 打开相机
public void OpenCameraDevice ()
{
    CameraDevice.Instance.Init(CameraDevice.CameraDirection.CAMERA_DEFAULT);
    CameraDevice.Instance.Start();
}
 
// 关闭识别
public void CloseCloudReco ()
{
    CloudRecoBehaviour cloudRecoBehaviour = GameObject.FindObjectOfType(typeof(CloudRecoBehaviour)) as CloudRecoBehaviour;
    cloudRecoBehaviour.CloudRecoEnabled = false;
}
 
// 打开识别
public void OpenCloudReco ()
{
    CloudRecoBehaviour cloudRecoBehaviour = GameObject.FindObjectOfType(typeof(CloudRecoBehaviour)) as CloudRecoBehaviour;
    cloudRecoBehaviour.CloudRecoEnabled = true;
}
public void OpenFlash () {
    CameraDevice.Instance.SetFlashTorchMode (true);
}
//关闭闪光灯
public void CloseFlash () {
    CameraDevice.Instance.SetFlashTorchMode (false);
}

但是这里有个坑,直接在start方法里面调用时没有效的,我是在update中判断摄像机是否处于激活状态再调用

  private void Update()
    {
        if(CameraDevice.Instance.IsActive())
            DataCommon.instance.CloseCameraDevice();
    }
等到从vuforia识别场景跳回无需识别场景时调用OpenCameraDevice()方法即可


另外,可能会有很多人跳转会出现问题,这是由于场景有多个摄像机造成的,因为vuforia场景只能有一个主摄像机(就是挂着VuforiaBehaviour的摄像头),但是如果我们初始化场景是无需识别场景,场景中的摄像头上会自动加载这个脚本,造成跳转时出问题,解决方法就是跳转之前销毁无需识别场景摄像头

猜你喜欢

转载自blog.csdn.net/dengshunhao/article/details/80983578
今日推荐