关于Unity中microphone类使用的一些坑

来源:互联网 发布:c 图书管理系统编程 编辑:程序博客网 时间:2024/05/21 17:03

最近要排查聊天系统语音功能无法用的bug;项目源码中用的是unity官方的microphone类,

发现在PC上会出现 microphone.devices返回字符串为空串这个bug,后来上网百度了白天也找不到头绪,后来魔法上网在Google的unity英文论坛找到了解答。为了以后遇到同样情况能够迅速解决,总结一些注意事项。


先上官网API说明Unity.Microphone


官网给出了使用教程,好了,来结论:


一、如果是在PC上:

(1)microphone.devices 为空 :请检查是否有外接麦克风设备,这个可以在右下角音量按钮出-->右键-->录音设备-->查看是否有麦克风设备或麦克风设备是否正常工作。

(2)microphone.devices不为空,但是其名字为空串,举个例子:

foreach (string device in Microphone.devices) {            Debug.Log("Name: " + device);}

上面代码中拿到的device可能是"",也就是所谓的空串,这种情况是应该unity自身的问题。我之前就有听说过unity对中文不友好,然后又看了看Microphone.devices的说明,它说这是一个可用麦克风设备名字数组。注意!!名字!!当时在这里卡了好久,后来发现是因为我的麦克风设备名字是中文名,估计是对中文不友好所以返回空串,

解决办法:麦克风设备名改为英文名,重启电脑即可。

不得不吐槽用名字区分麦克风设备这种不合理的设计,明显用ID更合理和科学吧。

二、如果是手机上:

对应可能出现的情况我也懒得说了,直接给出一些解决办法:

(1)保证你的工程开启了audio。在unity中,依次Edit/Project Settings/Audio,将会看到 Disable Unity Audio 这个选项,要保证这个不要被勾选。

(项目工程不知道哪个人把这个勾上,被这个问题搞了半天,最后还是从这里找到解答:Unity-Community

(2)申请手机麦克风权限,这里就自行百度吧,网上很多。



原创粉丝点击