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;
}
}
以上是给我错误的代码:
IndexOutOfRangeException:数组索引超出范围。
noise.GenerateNoiseMap(Int32 mapWidth,Int32 mapHeight,Single scale)(at
资产/脚本/ MapGeneration / noise.cs:24)
我并不完全熟悉数组如何在C#中工作(或根本不熟悉),但我的老师说,产生IndexOutOfRange错误的数组最常见的问题是我从1开始而不是索引0。我试图解决这个问题,但这似乎不是这段代码中的问题。
我正在尝试为自定义游戏生成Perlin噪声贴图。
错误是什么?
提前致谢。
答案 0 :(得分:9)
你的问题在这里:
for (int x = 0; y < mapWidth; x++)
它应该是:
for (int x = 0; x < mapWidth; x++)