C# 索引异常-音频频谱问题

C# 索引异常-音频频谱问题,c#,C#,我不知道为什么:float val=spectrum[I];正在生成超出数组边界的索引。请帮忙。。。!我是这个游戏的初学者 public class InputScript : MonoBehaviour{ void Start() { float[] spectrum = new float[256]; AudioSource aud = GetComponent<AudioSource>(); aud.clip =

我不知道为什么:float val=spectrum[I];正在生成超出数组边界的索引。请帮忙。。。!我是这个游戏的初学者

public class InputScript : MonoBehaviour{
    void Start()
    {
        float[] spectrum = new float[256];
        AudioSource aud = GetComponent<AudioSource>();
        aud.clip = Microphone.Start(null, true, 10, 44100);
        aud.Play();

        float maxIndex = 0;
        float maxValue = 0.0f;
        for (int i = 0; i <= spectrum.Length; i++)
        {
            float val = spectrum[i];
            if (val > maxValue)
            {
                maxValue = val;
                maxIndex = i;
            }
        }

        var freq = maxIndex * AudioSettings.outputSampleRate / 2 / spectrum.Length;
    }

    void Update()
    {
        float[] spectrum = new float[256];
        AudioListener.GetSpectrumData(spectrum, 0, FFTWindow.Rectangular);
    }
}
公共类InputScript:MonoBehavior{
void Start()
{
浮点[]频谱=新浮点[256];
AudioSource aud=GetComponent();
aud.clip=麦克风启动(null、true、1044100);
aud.Play();
float maxIndex=0;
浮点最大值=0.0f;
对于(int i=0;i maxValue)
{
maxValue=val;
maxIndex=i;
}
}
var freq=maxIndex*AudioSettings.outputSampleRate/2/spectrum.Length;
}
无效更新()
{
浮点[]频谱=新浮点[256];
GetSpectrumData(频谱,0,FFTWindow.矩形);
}
}

我应该能够从麦克风中提取输入的音调。

在.net阵列中,索引从0到
频谱。长度
独占:

for (int i = 0; i < spectrum.Length; i++)
for(int i=0;i
问题在于:

for (int i = 0; i <= spectrum.Length; i++)
// ----------------^

这将解决您的问题。

旁注的可能重复:我看不出您将值分配到
光谱的什么地方
;根据您当前的代码
float[]频谱=新的float[256]
是一个由
256
零组成的数组:
{0f,0f,0f,…,0f}
谢谢!我会试一试的!
for (int i = 0; i < spectrum.Length; i++)