texture2d中出现NullReference异常

本文关键字:NullReference 异常 texture2d | 更新日期: 2023-09-27 18:29:40

我已经尝试在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;
        }
    }
}

texture2d中出现NullReference异常

变量Content是ContentManager吗?这些变量是否已声明?你的类"坦克"没有扩展Microsoft.Xna.Framework.Game,是吗?

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

我建议从扩展Microsoft.Xna.Framework.Game的类中获取纹理。制作一个静态字典,加载所有纹理一次,然后通过访问该字典来获取这些纹理。这可能是最简单的解决方案。

纹理对象从未真正创建过。

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

是您键入的内容。但是Content.Load<>具有参数(字符串assetName)。

@"images/PlayerTankSpriteSheet"

而不是资产名称。它是一个文件路径。您需要单击解决方案资源管理器中"内容"下的精灵,然后找到资产名称。这是您作为ContentManager的参数键入的内容。加载<>