Unity3D 2019.3.0b7中VideoCapture.CreateAsync未调用回调函数求助
解决Unity中VideoCapture.CreateAsync回调未触发的问题
我之前也碰到过一模一样的困扰——WebCamTexture能正常调用摄像头,但VideoCapture.CreateAsync()的回调就是完全没反应,代码和官方示例也完全对齐。结合我的排查经验,给你几个最可能的解决方向:
1. 先确认运行平台是UWP
UnityEngine.Windows.WebCam.VideoCapture这个API仅支持UWP平台(包括PC端的UWP应用、Hololens等),如果你是在Unity Editor或者普通的Standalone Windows(非UWP)环境下测试,回调是绝对不会触发的——因为这个API在非UWP环境下根本不生效。
解决步骤:
- 打开Unity的Build Settings,切换到Universal Windows Platform平台
- 确认Build Settings里的SDK版本、目标设备等配置正确,然后打包测试(Editor里没法验证这个API的功能)
2. 检查UWP应用的权限配置
哪怕WebCamTexture能访问摄像头,VideoCapture可能需要额外的权限(比如麦克风权限,哪怕你只打算录制画面)。需要手动配置权限:
- 在Unity的UWP打包设置里,勾选「Webcam」和「Microphone」权限
- 或者打包后,在生成的Visual Studio项目里打开Package.appxmanifest,在「功能」标签下勾选「网络摄像头」和「麦克风」
3. 显式指定摄像头设备ID
有时候默认设备的检测会出问题,试试先枚举所有可用的摄像头设备,再传入具体的设备ID调用CreateAsync:
using UnityEngine.Windows.WebCam; using System.Collections.Generic; private async void Start() { // 枚举所有可用视频设备 List<VideoCaptureDevice> devices = await VideoCapture.FindAllVideoDevicesAsync(); if (devices.Count > 0) { // 传入第一个设备的ID创建VideoCapture VideoCapture.CreateAsync(devices[0].id, OnCaptureCreate); } else { Debug.LogError("未找到可用的摄像头设备"); } } void OnCaptureCreate(VideoCapture videoC) { if (videoC != null) { Debug.Log("VideoCapture初始化成功!"); // 后续录制逻辑 } else { Debug.LogError("VideoCapture初始化失败"); } }
4. 检查Unity版本兼容性
你使用的2019.3版本,Windows.WebCam系列API存在一些已知的小bug。如果上面的方法都无效,可以试试升级到2019.3的最新补丁版本,或者切换到2020.x版本,排查是否是版本带来的兼容性问题。
内容的提问来源于stack exchange,提问作者ForberichN
相关产品推荐
相关产品推荐

