设计用于将tileset分割为数组的方法在给定多个行时失败

本文关键字:失败 方法 用于 tileset 分割 数组 | 更新日期: 2023-09-27 18:09:09

这就是所讨论的方法:

Color[][] ChopUpTiles()
{
    int numTilesPerRow = terrainTiles.width / tileResolution;
    int numRows = terrainTiles.height / tileResolution;
    Color[][] tiles = new Color[numTilesPerRow * numRows][];
    for (int y = 0; y < numRows; y++)
    {
        for (int x = 0; x < numTilesPerRow; x++)
        {
            tiles[y * numTilesPerRow + x] = terrainTiles.GetPixels(x * tileResolution , y * tileResolution, tileResolution, tileResolution);
        }
    }
    return tiles;
}

这是一个非常基本的函数,并且工作-只要所讨论的标题集只有一行。如果它不止一行,它就会崩溃。突然间,使用"tiles[1]"不再返回tile 1。相反,它返回…15瓦。我不知道为什么它会这样做,也不知道数学在哪里错了。有人能看出是怎么回事吗?

设计用于将tileset分割为数组的方法在给定多个行时失败

你是指tiles[y][numTilesPerRow + x]tiles[y][x]之类的东西吗?因为我不知道你在做什么,但你正在检索整个行,而不是tile本身。

也,我认为Color[][] tiles = new Color[numTilesPerRow * numRows][];应该是Color[][] tiles = new Color[numRows][numTilesPerRow];还是我错了?

基本上,你有一个多维的Array但是你把它当作单维的Array