3

我正在尝试制作一个脚本,通过制作高度图然后从那里填写地形块来动态生成世界块。我的问题是创建一个二维对象数组。

public class Chunk
{
    public Block[,] blocks;

    Generate(){
        //code that makes a height map as a 2 dimensional array as hightmap[x,y]=z
        //convert heightmap to blocks
        for (int hmX = 0; hmX < size; hmX++)
        {
            for (int hmY = 0; hmY < size; hmY++)
            {
                blocks[hmX, hmY] = new Block(hmX, hmY, heightmap.Heights[hmX, hmY], 1);
            }
        }
    }
}

这给了我错误:

NullReferenceException 未处理,对象引用未设置为对象的实例。

4

1 回答 1

5

您只需要在循环之前添加 new :

Block[,] blocks = new Block[size,size];

或者更确切地说,在生成函数中(其他都一样):

blocks = new Block[size,size];

否则,您将隐藏原始的“块”变量。

于 2012-08-10T18:16:09.767 回答