C#中二维数组的问题

Ike*_*ude 0 c# arrays multidimensional-array unity-game-engine

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public static class noise 
{
    public static float[,] GenerateNoiseMap(int mapWidth, int mapHeight, float scale)
    {
        float[,] noiseMap = new float[mapWidth, mapHeight];

        if (scale <= 0)
        {
            scale = 0.0001f;
        }
        for(int y = 0; y<mapHeight; y++)
        {
            for (int x = 0; y < mapWidth; x++)
            {
                float sampleX = x/(mapWidth * scale);
                float sampleY = y/(mapHeight * scale);

                float perlinValue = Mathf.PerlinNoise(sampleX, sampleY);

                noiseMap[x, y] = perlinValue;
                Debug.Log(noiseMap.GetLength(0));
                Debug.Log(noiseMap.GetLength(1));
            }
        }
        return noiseMap;
    }
}
Run Code Online (Sandbox Code Playgroud)

上面是给我错误的代码:

IndexOutOfRangeException:数组索引超出范围.

noise.GenerateNoiseMap(Int32 mapWidth,Int32 mapHeight,Single scale)(at

资产/脚本/ MapGeneration/noise.cs:24)

我并不完全熟悉数组如何在C#中工作(或根本不熟悉),但我的老师说,产生IndexOutOfRange错误的数组最常见的问题是我从1开始而不是索引0.我试过了解决这个问题,但这似乎不是这段代码中的问题.

我正在尝试为我的自定义游戏生成Perlin噪声贴图.

什么是错误?

提前致谢.

suc*_*oss 9

你的问题在这里:

for (int x = 0; y < mapWidth; x++)
Run Code Online (Sandbox Code Playgroud)

它应该是:

for (int x = 0; x < mapWidth; x++)
Run Code Online (Sandbox Code Playgroud)