c# - 在 Unity3d 中的网络摄像头之间切换
问题描述
我正在尝试构建一个应用程序,用户可以在其中切换连接的网络摄像头。在启动时,默认网络摄像头应该会加载,它运行良好。之后,用户可以选择在摄像机之间切换。当我尝试这样做时,当我第二次调用另一台相机时,我试图放置网络摄像头纹理投影的四边形变黑了。我已附加 debug.log 以查看是否检测到摄像头的天气,摄像头正在检测。谁能告诉我我在哪里犯错。下面是调用网络摄像头二的代码。
public void camTwo()
{
WebCamDevice[] cam_devices = WebCamTexture.devices;
WebCamTexture webcamTexture = new WebCamTexture(cam_devices[1].name);
webcamTexture.Stop();
if (webcamTexture == null)
{
Debug.LogError("web cam not found");
}
else
{
Debug.Log("camera found");
}
Renderer renderer = e.GetComponent<Renderer>();
renderer.material.mainTexture = webcamTexture;
webcamTexture.Play();
}
解决方案
如果纹理上的材质设置为黑色,有时纹理可能是黑色的。另外,你的场景中有灯光吗?如果纹理位于 3D 对象(如平面或立方体)上,则需要光源才能看到它。与其以编程方式创建 webCamTexture,不如在 GUI 中手动创建您正在将相机传送到的纹理,并使用它来显示 WebCam(更容易查看它的属性并对其进行编辑)。
推荐阅读
- c# - 通过关联类检索数据
- reactjs - 使用 useEffect,如何跳过在初始渲染时应用效果?
- cakephp - 在 cakephp 3.6 中保存之前截断数据
- r - 自定义 igraph
- c - 乘法矩阵弄错了,不知道为什么,在 C 中?
- java - 当我键入数字键时,Java Swing 按右键
- html - 如何在输入文本字段旁边放置自定义图标?
- build - 发布中的 Visual Studio 命令行构建总是在调试中生成 DLL
- java - 使用 JShare API 时,如何获取特定文件的字段值?
- reactjs - React Router NavLink 映射时不呈现 activeClassName