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

25 篇文章 10 订阅

为了方便AR开发交流,博主建立了一个群 :891555732,欢迎一起讨论


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

1.MainCamera add VuforiaBehaviour脚本并取消勾选。

     https://blog.csdn.net/Testiness_Wind/article/details/79107948

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的摄像头),但是如果我们初始化场景是无需识别场景,场景中的摄像头上会自动加载这个脚本,造成跳转时出问题,解决方法就是跳转之前销毁无需识别场景摄像头

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值