Unity WebCamTexture не работает на Sony Xperia Z1 - PullRequest
0 голосов
/ 03 октября 2019

Я экспериментирую с веб-камерой на Unity, но она не показывает изображения на Sony Xperia Z1, есть идеи, как заставить ее работать?

public class CameraScript : MonoBehaviour
{
    public Text text;
    public RawImage projection;
    private WebCamTexture mycam;
    private string camName = "";

    void Start()
    {
        WebCamDevice[] devices = WebCamTexture.devices;
        // Finds Back Camera
        for (int i = 0; i < devices.Length; i++)
        {
            text.text += "\r\n" + devices[i].name;
            if (!devices[i].isFrontFacing)
            {
                camName = devices[i].name;
                text.text += " (B)";
            }
        }

        mycam = new WebCamTexture(camName);
        if (Permission.HasUserAuthorizedPermission(Permission.Camera))
        {
            // Starts Camera
            mycam.Play();
            projection.texture = mycam;
        }
        else if (!Permission.HasUserAuthorizedPermission(Permission.Camera))
        {
            // Permission not granted
            text.text = "Permission error";
        }
    }

    public void Click()
    {
        if (mycam.isPlaying)
        {
            mycam.Stop();
        }
        mycam.Play();
    }
}

1 Ответ

0 голосов
/ 03 октября 2019

Не могу найти ничего плохого в вашем сценарии.

Я использовал следующий скрипт один раз, и он работает нормально. Попробуйте, я также использую проверку, чтобы увидеть, если камера доступна. Просто предосторожность, возможно, камера не была доступна для вашего приложения.

public class PhoneCam : MonoBehaviour
{
    private bool isCamAvailable;
    private WebCamTexture backCam;
    private Texture defaultBackground;

    public RawImage background;


    void Start()
    {

        defaultBackground = background.texture;

        WebCamDevice[] devices = WebCamTexture.devices;

        if(devices.Length == 0)
        {
            print("No Devices");
            isCamAvailable = false;
            return;
        }

        for(int i = 0; i < devices.Length; i++)
        {
            if(!devices[i].isFrontFacing)
            {
                backCam = new WebCamTexture(devices[i].name, Screen.width, Screen.height);
            }
        }

        if (devices.Length == 0)
        {
            print("Unable to find back camera");
            return;
        }

        backCam.Play();
        background.texture = backCam;

        isCamAvailable = true;
    }

    void Update()
    {
        if(!isCamAvailable)
        {
            return;
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...