NullRerenceException未处理 - 对象引用未设置为对象的实例(Windows XNA Game Studio 4.0)

时间:2013-05-31 03:32:23

标签: c# xna-4.0

我目前正在重拍一款游戏,以便在学校进行评估,所以请原谅我,如果我做错了什么的话。我试图制作一个foreach循环,以便将大量的敌机拉到屏幕上。我在更新游戏时间里制作了一个循环。错误是“NullReferenceException未处理”,下面是“对象引用未设置为对象的实例”。这个代码在我们在课堂上制作的另一个“实用”游戏中起作用,所以我不确定我做错了什么。

        foreach (EnemyPlane ball in enemyplaneObjects)
        {
            ball.Update();
        }

和另一个抽奖更新。

        foreach (EnemyPlane ball in enemyplaneObjects)
        {
            ball.Update();
        }
另外要考虑的是,“ball”引用的值都是null,并且未在数组或spritebatch中声明。

这是一个spritebatch。

    GraphicsDeviceManager graphics;
    SpriteBatch spriteBatch;



    Texture2D truckTexture;
    Vector2 truckPosition;

    Texture2D planeTexture;
    Vector2 planePosition;


    Texture2D backgroundTexture;
    Vector2 backgroundPosition;

    Texture2D enemyplaneTexture;
    Vector2 enemyplanePosition;
    int enemyplaneCount = 5;



    Texture2D personTexture;
    Vector2 personPosition;
    Parachute personObject;

    Vector2 spriteVelocity = new Vector2(0.5f, 0f);

    Random rand = new Random();

   EnemyPlane[] enemyplaneObjects;

这是阵列。

        enemyplaneObjects = new EnemyPlane[enemyplaneCount];

        for (int index = 0 ; index < enemyplaneCount; index++)
        {
            byte r = (byte)rand.Next(64, 256); //Red Value
            byte g = (byte)rand.Next(64, 256); //Green Value
            byte b = (byte)rand.Next(64, 256); //Blue Value
            byte a = (byte)rand.Next(64, 256); //Alpha Value
            Color tempColor = new Color(r, g, b, a);
            enemyplaneObjects[0] = new EnemyPlane(EnemyPlane.Texture, new Vector2(rand.Next(2, 100), rand.Next(2, 100)), new Vector2(rand.Next(-2, 20), rand.Next(-2, 20)), tempColor);

        }

提前致谢。

1 个答案:

答案 0 :(得分:2)

您将需要使用您正在迭代的变量来初始化数组。截至目前,您只是初始化数组中的第一个条目。当你稍后在foreach中遍历它们时,对Update()的调用只对第一个条目有效,下一个条目将抛出异常。

enemyplaneObjects[index] = new EnemyPlane(EnemyPlane.Texture, new Vector2(rand.Next(2, 100), rand.Next(2, 100)), new Vector2(rand.Next(-2, 20), rand.Next(-2, 20)), tempColor);