Unity3D:调用手机(电脑)摄像头功能

最近在做项目的时候用到了,调用外部摄像头的功能,所以就到网上找了一下,有好多代码,但都是大同小异。一看就能明白的,我今天就想整理一下,免得到时在用时,找不到了,就做个笔记吧。

在上代码之前,要先说明一下,调用外部摄像头功能,之后能拓展好多功能出来,拍照啊   截屏啊什么的。有需要的可以试一下。下面开始上代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(RawImage))]
public class CameraDevice : MonoBehaviour
{
    private List<WebCamTexture> webCamTextures = new List<WebCamTexture>();
    private RawImage image;
    #region Unity Method
    // Called once before Start
    void Awake()
    {
        image = GetComponent<RawImage>();
    }

    // Use this for initialization
    IEnumerator Start()
    {
        //获取授权  
        yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
        if (Application.HasUserAuthorization(UserAuthorization.WebCam))
        {
            WebCamDevice[] devices = WebCamTexture.devices;
            for (int i = 0; i < devices.Length; i++)
            {
                WebCamTexture webCamTexture = new WebCamTexture(devices[i].name, 400, 300, 12);
                webCamTexture.Play();
                webCamTextures.Add(webCamTexture);
            }
        }
    }

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

    }

    // OnDestroy is called when the App is killed
    void OnDestroy()
    {

    }
    #endregion

    public void SetDevice(int index)
    {
        image.texture = webCamTextures[index];
    }
}

我测试过链接多个摄像头,但是当有三个的时候只识别两个,但是在QQ的设置里面明明能看到三个,不知道是我用手机当摄像头的原因,还是只能识别两个。这个还有待查证。最后说一句,就是要将这个脚本放到挂有RawImage的组件上。

You May Also Like

About the Author: 大腿Plus

发表评论