Unity Android面向Camera WTF bug

我正在使用Unity为Android开发应用程序。 尝试使用前置摄像头,从WebCamTexture获取数据。 后面的工作正常,但是当我试图翻转相机时,这个可怕的东西出现了:

**bitstream == (int)0xAFAFAFAF 

作为统一控制台中的错误。 然后,即使使用后置摄像头,WebCamTexture也会停止工作。 任何的想法?

PS使用Unity 5.3.3p1 ……可能是一个Unity bug吗?

注意

对于任何人来说,已经为Unity出现了一个新的(2016)插件,

https://www.assetstore.unity3d.com/en/#!/content/52154

如果你想在Unity中使用设备相机,基本上你“必须得到这个”。

Unity的设备相机function是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; } } 

我必须告诉你多年来攻击Android ROM并乱搞,你会经常遇到这种情况。 最糟糕的过去是由于制造商使用的固件,你的程序可能在一部手机上完美运行,但由于制造商保留的东西多么分散,因此不能在另一部手机上运行。 与Marshmallow一起向前看,由于他们现在对每个人施加的限制,你会越来越少地看到它。 我建议你只需要为代码的这一部分学习一点Java,然后直接从Unity调用它。