我正在使用 Unity 开发适用于 Android 的应用程序。 尝试使用前置摄像头,从 WebCamTexture 获取数据。后向工作正常,但当我尝试翻转相机时,出现了这个糟糕的事情:
**bitstream == (int)0xAFAFAFAF
作为统一控制台中的错误。然后,WebCamTexture 完全停止工作,即使使用后置摄像头也是如此。 有什么想法吗?
附言使用 Unity 5.3.3p1...可能是 Unity 错误?
最佳答案
注意
对于任何阅读者,Unity 出现了一个新的 (2016) 插件,
https://www.assetstore.unity3d.com/en/#!/content/52154
如果您想在 Unity 中使用设备相机,基本上您“必须得到这个”。
Unity 的设备相机是 Unity 中最糟糕的东西——它实际上什至不是 alpha 质量。这是 Unity 中最糟糕的事情,他们将它包括在内是荒谬的,它只是一个测试运行。
编写双平台真正原生的高速相机插件极其困难。既然第一个已经出现,除了使用它别无选择。 Unity 的废话是不可能的,您可以轻松地花费 2-3 周的时间来尝试让粗糙的相机工作。
对于更换相机的灾难,这是一个相当安全的方法!
public void CycleCams()
{
StartCoroutine(_cycle());
}
private IEnumerator _cycle()
{
WebCamDevice[] d = WebCamTexture.devices;
if ( d.Length <= 1 )
{
Debug.Log("only one.");
if (d.Length==1) Debug.Log("Name is " +d[0].name);
yield break;
}
Debug.Log("0 " +d[0].name);
Debug.Log("1 " +d[1].name);
if ( wct.deviceName == d[0].name )
{
wct.Stop();
yield return new WaitForSeconds(.1f);
wct.deviceName = d[1].name;
yield return new WaitForSeconds(.1f);
wct.Play();
nameDisplay.text = "\"" +wct.deviceName +"\"";
yield break;
}
if ( wct.deviceName == d[1].name )
{
wct.Stop();
yield return new WaitForSeconds(.1f);
wct.deviceName = d[0].name;
yield return new WaitForSeconds(.1f);
wct.Play();
nameDisplay.text = "\"" +wct.deviceName +"\"";
yield break;
}
}
关于c# - Unity Android 前置摄像头 WTF 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35845540/