我正在使用Unity为Android开发应用程序。 试图使用前置摄像头,从WebCamTexture获取数据。后面的工作正常,但当我试图翻转相机这个可怕的事情出来:Unity Android前置摄像头WTF bug
**bitstream == (int)0xAFAFAFAF
作为统一控制台中的错误。然后,即使使用后置摄像头,WebCamTexture也会停止工作。 有什么想法?
P.S.使用Unity 5.3.3p1 ...可能是Unity错误?
我正在使用Unity为Android开发应用程序。 试图使用前置摄像头,从WebCamTexture获取数据。后面的工作正常,但当我试图翻转相机这个可怕的事情出来:Unity Android前置摄像头WTF bug
**bitstream == (int)0xAFAFAFAF
作为统一控制台中的错误。然后,即使使用后置摄像头,WebCamTexture也会停止工作。 有什么想法?
P.S.使用Unity 5.3.3p1 ...可能是Unity错误?
的人看书,一个新的(2016)插件已经出现了团结,
https://www.assetstore.unity3d.com/en/#!/content/52154
基本上你“必须得到这个”如果你想在Unity使用设备摄像头。
Unity的设备相机的东西是Unity中最糟糕的东西 - 它的字面上甚至不是alpha质量。这是Unity中最糟糕的事情,他们把它包括在内是荒谬的,这只是一次测试。
要编写一个双平台真正的本地高速摄像头插件是非常困难的。现在第一个出现了,没有什么比使用它真正的选择。 Unity的废话是不可能的,你可以轻松地花费2-3周的时间试图让粗糙的相机工作。
下面是一个相当bulletroof方法的灾难改变相机!
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;
}
}
真正的防弹。我有几乎相同的代码,解决方案是在协程中转换我的功能,并等待几分之一秒。谢谢(我即将抱怨团结为他们糟糕的文档上webcamtexture顺便说一句) –
我设法得到这一点,但我再说一遍:用** UGLY **解决方案。 #if #elif用于操作系统,以及手动检查设备方向,相机正在工作等等。 –
我通过记录Webcamtexture.devices获得了这些名称。而且看起来阵列的第一个元素(最好不要用它的名字)总是后面的 - >第二个元素总是前面的;否则,你可以检查WebCamDevice.isFrontFacing(或类似的东西),但我不知道有多可靠 –
我不得不告诉你,从多年的黑客入侵Android ROM和乱搞,你会经常遇到这种情况。过去最糟糕的情况是由于制造商使用的固件,您的程序可能在一部手机上完美运行,但由于制造商保存的东西多么分散,因此无法在另一部手机上运行。与棉花糖一起前进,你会看到这一点越来越少,因为他们现在对每个人都施加了限制。我建议你只需要学习一小部分Java代码,然后直接从Unity中调用它。
我解决了丑陋的信息,但仍然没有来自前置摄像头的图像。 三星Galaxy S4 GT - i9506与Android 5.0.1 –
尝试在切换到前置摄像头之前暂停摄像头并在之后恢复。 – EvilTak
我正在停止相机,而不是暂停它... 我真的很讨厌Android的人。现在,在我切换后,后视仍能正常工作,但前置摄像头仍然没有图像。甚至没有黑屏 –
@TizianoCoroneo,考虑*实际上总是得到两个相机的诀窍..只使用两个WebCamTexture飞机..并且只在给定时间显示你想要的相机!* – Fattie