texture2d中的NullReference异常

时间:2016-01-09 14:48:42

标签: c# visual-studio xna xna-4.0

我试图在PlayerTank类构造函数上加载纹理。但我收到了NullReferenceException

namespace BattleCityv1._5.Tanks
{
    class PlayerTank : Tank
    {
        public PlayerTank(int life, Point position)
        {
            texture = Content.Load<Texture2D>(@"images/PlayerTankSpriteSheet");
            Life = life;
            Rectangle = new Rectangle(position.X, position.Y, 32, 32);
            Source = new Rectangle(0, 0, Rectangle.Width, Rectangle.Height);
            type = "player1";
            Color = Color.White;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

变量Content是ContentManager吗?这些变量甚至被宣布?你的班级&#34;坦克&#34;没有扩展Microsoft.Xna.Framework.Game,是吗?

内容可能为空。但内容只应该在你的类中扩展Microsoft.Xna.Framework.Game(可能会命名为BattleCityv1或其他东西)

我的建议是从您的课程中获取扩展Microsoft.Xna.Framework.Game的纹理。创建一个静态字典,加载所有纹理一次,并通过访问该字典获取这些纹理。它可能是最简单的解决方案。

答案 1 :(得分:0)

从未真正创建纹理对象。

texture = ContentManager.Load<Texture2D>(@"images/PlayerTankSpriteSheet");

是您输入的内容。但是Content.Load&lt;&gt;有参数(字符串assetName)。

@"images/PlayerTankSpriteSheet"

资产名称。这是一个文件路径。您需要在内容下的解决方案资源管理器中单击精灵,然后找到资产名称。这是您输入的内容,作为ContentManager.Load&lt;&gt;

的参数