I’ve been looking into integrating the device camera in a mobile app (iOS and Android), and keep coming across some errors when accessing WebCamTexture.devices.
When devices are available (i.e. on my laptop with a built-in camera and on mobile devices with cameras), the code below works just fine. However, when I run it on my desktop system (which has no camera), I get these errors in the console:
result == noErr
UnityEngine.WebCamTexture:get_devices()
<Start>c__Iterator0:MoveNext() (at Assets/Scripts/Camera/WebCamera.cs:16)
result == noErr
UnityEngine.WebCamTexture:get_devices()
<Start>c__Iterator0:MoveNext() (at Assets/Scripts/Camera/WebCamera.cs:18)
They correspond to the lines where I am using WebCamTexture.devices. (Actually, the first of these lines is my attempt to avoid the error, which obviously doesn’t work :P)
The game continues running despite this (it successfully just gets rid of the camera surface via the Destroy() call) so the errors aren’t stopping the app, but I feel like it shouldn’t be running with errors spewed to the console.
Now, I’m afraid I do not understand what “result == noErr” means and can’t find documentation about this. Any ideas on what this issue is
and how I can implement this without errors in the console?
using UnityEngine;
using System.Collections;
// Basic code borrowed from: http://www.ikriz.nl/2011/12/23/unity-video-remake
public class WebCamera : MonoBehaviour
{
private WebCamTexture webcamTexture;
IEnumerator Start()
{
/* First we'll try to go through the list of cameras (if
* we can) and find a suitable one (not front-facing). */
bool foundCamera = false;
string desiredCameraName = "";
if (WebCamTexture.devices != null)
{
for (int i = 0; i < WebCamTexture.devices.Length; i++)
{
// We'd like a camera which is not front-facing.
if (!WebCamTexture.devices*.isFrontFacing)*
_ desiredCameraName = WebCamTexture.devices*.name;_
_ }_
_ }*_
_ /* If we’ve got one, we try to get access and then play it. /_
_ if (foundCamera)_
_ {_
_ webcamTexture = new WebCamTexture(desiredCameraName);_
_ renderer.material.mainTexture = webcamTexture;*_
* yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);*
* if(Application.HasUserAuthorization(UserAuthorization.WebCam))*
* {*
* webcamTexture.Play();*
* }*
* }*
* else*
* {*
* // No camera. So sad. Time to end it.*
* Destroy(gameObject); *
* }*
}
}
Hi, I am running into the same issue, when I try to access the device list when there is no device available. I need to access that list even if empty, at least to know it's empty... Did you filled a bug to unity?
– Jean-Fabre