如何使用二维浮点数组的数组?
How to use an array of two dimensional float arrays?
我试过使用通用列表,但我的研究表明无法重置列表的枚举器,所以不会这样做,因为我需要连续迭代 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# 的通用列表,所以我在这里不知所措。
在您的数组声明中,您明确声明 cache 数组是多维数组的数组。错误在 cache[i][0] = noiseMap;因为它类似于基于 C/C++ 的语言中的二维数组语法。您应该使用 cache[i] = noiseMap,因为这样您就可以显式通知编译器您在该数组中引用了二维数组并写入了一些值。
我试过使用通用列表,但我的研究表明无法重置列表的枚举器,所以不会这样做,因为我需要连续迭代 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# 的通用列表,所以我在这里不知所措。
在您的数组声明中,您明确声明 cache 数组是多维数组的数组。错误在 cache[i][0] = noiseMap;因为它类似于基于 C/C++ 的语言中的二维数组语法。您应该使用 cache[i] = noiseMap,因为这样您就可以显式通知编译器您在该数组中引用了二维数组并写入了一些值。