【问题标题】:Changing between front and back camera in Unity using Vuforia and Fungus使用 Vuforia 和 Fungus 在 Unity 中切换前后摄像头
【发布时间】:2018-03-03 14:22:36
【问题描述】:

我是 Unity 和 Vuforia 的新手。

我一直试图弄清楚如何使用 UI 按钮在 Vuforia 中的两种相机模式之间进行切换。

所以我想要实现的是能够在应用运行时在前后摄像头之间进行切换。

我已将以下脚本链接到 UI 按钮及其在 Unity 中的内置 OnClickEvent,但它似乎不起作用,因为也没有写入 DebugLog 消息。

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

public class CameraSwap : MonoBehaviour {

    bool cameramode = false;
    public void OnCameraChangeMode()
    {
        Vuforia.CameraDevice.CameraDirection currentDir = Vuforia.CameraDevice.Instance.GetCameraDirection();
        if (!cameramode)
        {
            RestartCamera(Vuforia.CameraDevice.CameraDirection.CAMERA_FRONT);
            Debug.Log("Using FRONT Camera");
        }
        else
        {
            RestartCamera(Vuforia.CameraDevice.CameraDirection.CAMERA_BACK);
            Debug.Log("Using BAC Camera");
        }
    }

    private void RestartCamera(Vuforia.CameraDevice.CameraDirection newDir)
    {
        Vuforia.CameraDevice.Instance.Stop();
        Vuforia.CameraDevice.Instance.Deinit();
        Vuforia.CameraDevice.Instance.Init(newDir);
        Vuforia.CameraDevice.Instance.Start();
    }
}

【问题讨论】:

标签: unity3d vuforia


【解决方案1】:

这里的建议是正确的 - 只需从可用功能中选择它即可。

对于那些难以使用 Unity/Vuforia 编写相机翻转脚本的人,以下是整个脚本的工作示例:

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


public class CameraController : MonoBehaviour 
{
    private bool lightOn = false;
    private bool frontCamera = false;

    public void CameraChange()
    {
        if (!frontCamera)
        {
            RestartCamera(CameraDevice.CameraDirection.CAMERA_FRONT);
            frontCamera = true;
            Debug.Log("Using Front Camera");
        }
        else if (frontCamera)
        {
            RestartCamera(CameraDevice.CameraDirection.CAMERA_BACK);
            frontCamera = false;
            Debug.Log("Using Back Camera");
        }
        else
        {
            Debug.Log("No camera status available.");
        }
    } 

    private void RestartCamera(CameraDevice.CameraDirection newDir)
    {
        CameraDevice.Instance.Stop();
        CameraDevice.Instance.Deinit();
        CameraDevice.Instance.Init(newDir);
        CameraDevice.Instance.Start();

        // These are to fight the bug the will otherwise flip the selfie cam upside down on iOS
        // Periodically check to see if still needed
        VuforiaUnity.OnPause();
        VuforiaUnity.OnResume();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多