Unity打包IOS相关设置和麦克风延迟问题的解决办法

6 篇文章 2 订阅

引子

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

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

是的恭喜你,麦克风的确会卡,解决办法是建议你在游戏开始的时候就调用麦克风,或者在PlayerSettingOtherSettingsConfiguration里面找到这些选项,并勾选Prepare Ios For Recording选项。
好消息是如此操作之后调用麦克风的确不会卡了,坏消息是会导致音频只从上方听筒里发出来。
显然这不是我们希望的结果。
所以我们查看下一步。
截图

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

接上面的问题,还是这张图。
截图
网络上流传很久的UnitySpeakerFix工程或许是有用的(我没测,不妨有需要的朋友们亲测一下)(https://github.com/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. )

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的方式计算样本数。
具体可参见(https://answers.unity.com/questions/1188892/error-executing-result-instance-m-sound-lockoffset.html?sort=votes

原文链接

原文链接:https://blog.csdn.net/weixin_40715387/article/details/90210757

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity 是一款广泛用于游戏开发的跨平台引擎,它支持多种操作系统和设备,包括 iOS(苹果的移动操作系统)。而 com.ptc.vuforia.engine 则是 Unity 中用来支持增强现实(AR)功能的一个插件。 在 Unity打包 iOS 平台,我们首先需要确保已经安装了适用于 iOS 的开发环境及相关证书。然后,在 Unity 中进行以下步骤来进行打包: 1. 首先,选择菜单栏中的 File(文件)--> Build Settings(构建设置)打开构建设置窗口。 2. 在构建设置窗口中,选择 iOS 平台,并点击 Switch Platform(切换平台)按钮。Unity 将会重新编译项目以适应 iOS 平台。 3. 然后,点击 Player Settings(播放器设置)按钮,打开 Player Settings 窗口。 4. 在 Player Settings 窗口中,我们需要设置一些 iOS 相关的选项,包括应用程序的图标、权限、名称等。 5. 在设置完成后,点击 Build(构建)按钮,选择一个目录来保存生成的 Xcode 项目。 6. Unity 将会自动导出 Xcode 项目文件,我们可以使用 Xcode 来进一步修改和打包应用程序。 7. 打开导出的 Xcode 项目,在 Xcode 中选择合适的开发证书和设备,然后进行编译和打包。 8. 最终,我们将得到一个用来在 iOS 设备上安装和运行的应用程序。 需要注意的是,如果项目中使用了 com.ptc.vuforia.engine 这个插件来支持 AR 功能,我们需要确保该插件已经正确导入到 Unity 项目中,并且在打包 iOS 时也包含了相关的资源文件和设置。 总而言之,Unity 提供了便捷的打包方式来将游戏或应用程序导出到 iOS 平台,并且通过 com.ptc.vuforia.engine 这个插件,我们可以进一步增强应用程序的功能,实现更出色的游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值