失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Unity打包Ios相关权限和麦克风延迟问题的一种解决办法

Unity打包Ios相关权限和麦克风延迟问题的一种解决办法

时间:2021-10-08 16:34:31

相关推荐

Unity打包Ios相关权限和麦克风延迟问题的一种解决办法

Unity打包Ios相关权限和麦克风延迟问题

Hello 大家好我又来填坑了问题一:调用 Microphone.Start()方法的时候主线程明显卡顿问题二:IOS使用麦克风时声音不会从扬声器里发出来问题三:IOS使用麦克风或者相机的程序打包到Xcode运行时会闪退。问题四:正确设置麦克风之后记录得到的数据使用audio.clip.GetData()方法时报错Error executing result = instance->m_Sound->lock(offsetBytes, lengthBytes, &ptr1, &ptr2, &len1, &len2) (An invalid parameter was passed to this function. )

Hello 大家好我又来填坑了

最近的项目用到了麦克风做音量检测,类似的问题也可能出现在制作游戏内语音系统的时候,凡是调用unity自带的microphone类都会有类似的问题。有需要的朋友们可以看一下。

问题一:调用 Microphone.Start()方法的时候主线程明显卡顿

是的恭喜你,麦克风的确会卡,解决办法是建议你在游戏开始的时候就调用麦克风,或者在PlayerSetting的OtherSettings的Configuration里面找到这些选项,并勾选Prepare Ios For Recording选项。

好消息是如此操作之后调用麦克风的确不会卡了,坏消息是会导致音频只从上方听筒里发出来。

显然这不是我们希望的结果。

所以我们查看下一步。

问题二:IOS使用麦克风时声音不会从扬声器里发出来

接上面的问题,还是这张图。

网络上流传很久的UnitySpeakerFix工程或许是有用的(我没测,不妨有需要的朋友们亲测一下)(/10people/UnitySpeakerFix)

但是Unity的确为我们提供了录音时强制扬声器输出的选项。

相信大家已经看到了,Force IOS Speakers when Recording.

勾选他!

就好了。

(但是理论上这样会导致录音时插耳机声音也会从扬声器传出来,我还没试,试完后更)

问题三:IOS使用麦克风或者相机的程序打包到Xcode运行时会闪退。

在确保自己代码没问题的情况下这种状况多半是Xcode工程的Plist没有正确设置。(虽说我们引用相应的名命空间Unity就会在导出Xcode工程的时候自动帮我们补齐Plist,但是前提是需要正确设置)

还是同样的一张图。

前三个 Description分别是相机,定位和麦克风权限,后面填写该权限用于干什么就好了。

问题四:正确设置麦克风之后记录得到的数据使用audio.clip.GetData()方法时报错Error executing result = instance->m_Sound->lock(offsetBytes, lengthBytes, &ptr1, &ptr2, &len1, &len2) (An invalid parameter was passed to this function. )

该问题反馈传递给了该方法一个无效的参数。

该方法是因为在调取音频数据时Clip会自动混合两声道,Unity文档写明可以通过使用clip.channels * clip.samples的方式计算样本数。

具体可参见(/questions/1188892/error-executing-result-instance-m-sound-lockoffset.html?sort=votes)

如果觉得《Unity打包Ios相关权限和麦克风延迟问题的一种解决办法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。