So i am trying to make my array generate a bunch of cubes, like a minecraft ripoff or something, just not procedural. Anyway, here is my code. You may notice that it is modified from a tutorial.
Error Code: IndexOutOfRangeException: Array index is out of range.
(wrapper managed-to-managed) object:ElementAddr_3_4 (object,int,int,int)
TileMap.Start () (at Assets/TileMap.cs:24
public TileType[] tileTypes;
int[,,] tiles;
int mapSizeX = 20;
int mapSizeY = 20;
int mapSizeZ = 10;
void Start() {
// Allocate our map tiles
tiles = new int[mapSizeX,mapSizeY,mapSizeZ];
// Initialize our map tiles to be grass
for(int x=0; x < mapSizeX; x++) {
for (int y = 0; y < mapSizeX; y++)
{
for (int z = 0; z < mapSizeX; z++)
{
tiles[x, y, z] = 0;
}
}
}
// Let's make a u-shaped mountain range
tiles[4, 4,0] = 2;
tiles[5, 4,0] = 2;
tiles[6, 4,0] = 2;
tiles[7, 4,0] = 2;
tiles[8, 4,0] = 2;
tiles[4, 5,0] = 2;
tiles[4, 6,0] = 2;
tiles[8, 5,0] = 2;
tiles[8, 6,0] = 2;
tiles[4, 4, 1] = 2;
tiles[5, 4, 1] = 2;
tiles[6, 4, 1] = 2;
tiles[7, 4, 1] = 2;
tiles[8, 4, 1] = 2;
tiles[4, 5, 1] = 2;
tiles[4, 6, 1] = 2;
tiles[8, 5, 1] = 2;
tiles[8, 6, 1] = 2;
tiles[4, 4, 2] = 2;
tiles[5, 4, 2] = 2;
tiles[6, 4, 2] = 2;
tiles[7, 4, 2] = 2;
tiles[8, 4, 2] = 2;
tiles[4, 5, 2] = 2;
tiles[4, 6, 2] = 2;
tiles[8, 5, 2] = 2;
tiles[8, 6, 2] = 2;
// Now that we have all of our map data, let's spawn the visual prefabs
GenerateMapVisual();
}
void GenerateMapVisual()
{
for (int x = 0; x < mapSizeX; x++)
{
for (int y = 0; y < mapSizeX; y++)
{
for (int z = 0; z < mapSizeX; z++)
{
TileType tt = tileTypes[tiles[x, y, z]];
Instantiate(tt.tileVisualPrefab, new Vector3(x, y, z), Quaternion.identity);
}
}
}
}
}
I am pretty new to C#, and i am not sure what is wrong. Please help! Thank you!