Unity Error executing result=instance->m_Sound->lock()An invalid parameter was passed to this func(代
Posted 珞珈大胖强TURBO
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity Error executing result=instance->m_Sound->lock()An invalid parameter was passed to this func(代相关的知识,希望对你有一定的参考价值。
报错详情
GetData()方法解析
此方法使用剪辑中的样本数据填充数组。使用 offsetSamples 参数开始从剪辑中的特定位置开始读取,读取直到填满data数组(如果从偏移开始的读取长度大于剪辑长度,则读取将环绕, 即从剪辑的开头读取剩余的样本。)
错误解析
该错误反馈:传递给该方法一个非法的参数。此方法共有两个参数:
解决思路
- 检查第一个参数,其可能的错误原因是没有提前用new申请一块确定大小的空间;
- 重点在第二个参数,这个参数如果为负或为其他超出剪辑部分的值,就会直接导致出现上面的错误,只需注意此参数一定要保持在这部分剪辑的范围内即可解决此错误。
解决实例
出错时代码如下:
int sampleSize = 128;
float[] samples = new float[sampleSize];//参数1
int startPosition = Microphone.GetPosition(device) - (sampleSize + 1);//参数2
micRecord.GetData(samples, startPosition);//使用方法
问题:在项目一开始的时候,Microphone.GetPosition(device)=0,此时参数2为 -129,是负数,不能作为一个此方法要求的开始位置。
修改后:
int sampleSize = 128;
float[] samples = new float[sampleSize];//参数1
if (Microphone.GetPosition(device) > sampleSize)
{
int startPosition = Microphone.GetPosition(device) - (sampleSize + 1);//参数2
micRecord.GetData(samples, startPosition);//使用方法
}
此时进入方法时参数2一定在该剪辑片段的范围内,问题解决。
总结
麦克风报此错误肯定是因为两个参数不符合方法的要求,了解这两个参数的具体意义之后就很容易逐个解决了。
以上是关于Unity Error executing result=instance->m_Sound->lock()An invalid parameter was passed to this func(代的主要内容,如果未能解决你的问题,请参考以下文章
Unity Error executing result=instance->m_Sound->lock()An invalid parameter was passed to this func(代
unity 脚本执行顺序设置 Script Execution Order Settings
Execution Order of Event Functions, unity 3d 事件函数的执行顺序
““make: *** [executable] Error 1”是啥意思?
impdp ORA-29913: error in executing ODCIEXTTABLEOPEN callout