记录下代码,其中很多问题没弄清楚,只是可以这样使用。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Main : MonoBehaviour
{
public int index;
public RawImage targetImg;
public WebCamTexture currentTexture;
private readonly Rect DefaultRect = new Rect(0f, 0f, 1f, 1f);
private readonly Rect FixedRect = new Rect(0f, 1f, 1f, -1f);
private void Start()
{
targetImg.rectTransform.sizeDelta = new Vector2(Screen.height / 2, Screen.width / 2);
}
public void Take()
{
var dev = WebCamTexture.devices[index];
currentTexture = new WebCamTexture(dev.name, Screen.height, Screen.width, 60);
currentTexture.filterMode = FilterMode.Trilinear;
targetImg.texture = currentTexture;
currentTexture.Play();
}
public void Next()
{
index++;
index = index % WebCamTexture.devices.Length;
Take();
}
private void Update()
{
if (currentTexture == null)
{
return;
}
targetImg.rectTransform.localEulerAngles = new Vector3(0, 0, -currentTexture.videoRotationAngle);
targetImg.uvRect = currentTexture.videoVerticallyMirrored ? FixedRect : DefaultRect;
Debug.Log($"{currentTexture.videoRotationAngle} -- {currentTexture.videoVerticallyMirrored}");
//竖屏状态(锁定竖屏)下,Android后置摄像头一直输出 90 -- False,旋转手机无变化,前置摄像头一直输出 270 -- False
}
}