c# - XNA:数组赋值 (System.NullRefferenceException)

c# - XNA: Array assignment (System.NullRefferenceException)

我想创建 class Tile 的实例,我打算用 for-Loop 来做。 为了包含 Tiles,我使用了一个数组,我在主游戏 Class :

中声明了它
Tile[] Tiles;

实例的创建遵循方法,因为需要加载必要的图形:

protected override void LoadContent()
    {
        // Create a new SpriteBatch, which can be used to draw textures.
        spriteBatch = new SpriteBatch(GraphicsDevice);

        splashText = Content.Load<Texture2D>("SplashText");
        splashRect = new Rectangle((int)center.X - splashText.Width / 2, (int)center.Y - splashText.Height / 2, splashText.Width, splashText.Height);
        gras = Content.Load<Texture2D>("Gras");
        border = Content.Load<Texture2D>("Border");
        borderHighlight = Content.Load<Texture2D>("BorderHighlighted");
        emerald = Content.Load<Texture2D>("Emerald");

        // TODO: use this.Content to load your game content here

        Tiles[0] = new Tile (new Vector2(920, 540), gras);          //The Error refferes to this line
        /*Tile tile0 = new Tile(new Vector2(920, 540), emerald);
        Tile tile1 = new Tile(new Vector2(920, 476), gras);
        Tile tile2 = new Tile(new Vector2(856, 508), gras);
        Tile tile3 = new Tile(new Vector2(792, 540), gras);
        Tile tile4 = new Tile(new Vector2(856, 572), gras);
        Tile tile5 = new Tile(new Vector2(920, 604), gras);
        Tile tile6 = new Tile(new Vector2(984, 572), gras);
        Tile tile7 = new Tile(new Vector2(1048, 540), gras);
        Tile tile8 = new Tile(new Vector2(984, 508), gras);
        Tiles = new Tile[] { tile0, tile1,  tile2, tile3, tile4, tile5, tile6, tile7, tile8 };*/
    }

我不想在注释中使用代码,因为我不知道如何在 for 循环中命名实例。

如何以其他方式创建它们而不会出现错误? 感谢您的支持!

您已将 Tiles 声明为 Tile 的数组。但是,您还没有实例化它,也没有给它一个大小。您将要查看 Array.

的用法

您也可以尝试使用 List 进行此操作。

List<Tile> tiles = new List<Tile>();

这将创建一个 Tile 类型的 List 对象,并使用它们的默认构造函数实例化所有的 Tile。

然后您可以使用:

Tiles.Add(new Tile(new Vector2(920, 540), gras);