如何使用二维浮点数组的数组?

时间:2016-06-06 18:42:29

标签: c# unity3d perlin-noise procedural-generation

我尝试过使用通用列表,但我的研究表明List的枚举器无法重置,因此我不需要在float [,]列表上连续​​迭代。

我基本上想要缓存游戏循环迭代的10个不同的perlin噪声贴图。每个perlin映射都是float [,]。所有地图的宽度和高度都相同。

我想将这些存储在一些我可以不断迭代的数据结构中,无论是通用列表还是数组:

void BuildCache() {
    cache = new float[cacheSize][,];
    for(int i = 0; i < cacheSize; i++) {
        float[,] noiseMap = Noise.GenerateNoiseMap (width, height, seed, noiseScale, octaves, persistence, lacunarity, offset);
        cache [i] [0] = noiseMap;
        offset += speed;
    }
}

导致此错误:Assets / Scripts / FogGenerator.cs(51,36):错误CS0022:索引数量错误1' inside [], expected 2'

这似乎是一个基本的东西,在Java中我会使用通用列表,但由于我无法重置C#的通用列表,我在这里不知所措。

1 个答案:

答案 0 :(得分:3)

在声明数组时,您明确声明 cache 数组是一个多维数组的数组。错误在cache [i] [0] = noiseMap;因为它类似于基于C / C ++的语言中的二维数组语法。你应该使用cache [i] = noiseMap,因为你明确地使用了nofity编译器来引用这个数组中的二维数组并写入一些值。