using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//挂载到RawImage上即可
public class Webcam_Test : MonoBehaviour
{
private bool camAvailable;
private WebCamTexture cameraTexture;
public RawImage background;//加上AspectRatioFitter组件调整画面尺寸
public AspectRatioFitter fit;
void Start()
{
StartCoroutine("InitCameraCor");
//background.texture = null;
//WebCamDevice[] devices = WebCamTexture.devices;
//if (devices.Length == 0)
// return;
//for (int i = 0; i < devices.Length; i++)
//{
// var curr = devices[i];
// curr = WebCamTexture.devices[0];
// cameraTexture = new WebCamTexture(curr.name, Screen.width, Screen.height, 15);
//}
//if (cameraTexture == null)
// return;
//cameraTexture.Play(); // Start the camera
//background.texture = cameraTexture; // Set the texture
//camAvailable = true; // Set the camAvailable for future purposes.
}
// Update is called once per frame
void Update()
{
if (cameraTexture == null) return;
float ratio = (float)cameraTexture.width / (float)cameraTexture.height;
fit.aspectRatio = ratio; // Set the aspect ratio
float scaleY = cameraTexture.videoVerticallyMirrored ? -1f : 1f; // Find if the camera is mirrored or not
background.rectTransform.localScale = new Vector3(1f, scaleY, 1f); // Swap the mirrored camera
int orient = -cameraTexture.videoRotationAngle;
background.rectTransform.localEulerAngles = new Vector3(0, 0, orient);
}
///
/// 初始化摄像头
///
public IEnumerator InitCameraCor()
{
yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
if (Application.HasUserAuthorization(UserAuthorization.WebCam))
{
WebCamDevice[] devices = WebCamTexture.devices;
var DeviceName = devices[0].name;
//判断平台
if (Application.platform==RuntimePlatform.Android|| Application.platform == RuntimePlatform.IPhonePlayer)
{
for (int i = 0; i < devices.Length; i++)
{
//开启后置摄像头
if(!devices[i].isFrontFacing)
{
DeviceName = devices[i].name;
break;
}
}
}
cameraTexture = new WebCamTexture(DeviceName, Screen.width, Screen.height,15);
cameraTexture.Play(); // Start the camera
background.texture = cameraTexture; // Set the texture
}
}
//这下面的是我跳转到AR场景当中的,需要把上个场景中的webcamTexture关闭。
//没有这一需求的小伙伴门可以忽略
//private void OnDestroy()
//{
// cameraTexture.Stop();
// cameraTexture = null;
//}
}