资产未找到XNA

我是XNA的新手,我开始遵循在屏幕上绘制图像的教程。 我能够将我的图像移动到Content文件夹中,但是当我尝试在我的代码中使用它时,无法找到它。

我正在使用资产名称而我无法找到我做错的事情。 教程使用XNA 3.0,我使用的是Visual Studio 2010,不确定是否重要。

这是我的代码

public class Game1 : Microsoft.Xna.Framework.Game { Vector2 mPosition = new Vector2(0, 0); Texture2D mSpriteTexture; GraphicsDeviceManager graphics; SpriteBatch spriteBatch; public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; } protected override void Initialize() { base.Initialize(); } protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); mSpriteTexture = Content.Load("Face"); } protected override void UnloadContent() { } protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); base.Update(gameTime); } protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.Black); spriteBatch.Begin(); spriteBatch.Draw(mSpriteTexture, mPosition, Color.White); spriteBatch.End(); base.Draw(gameTime); } } 

}

错误显示“ContentLoadException未处理。未找到文件。

Solution Explorer

我希望这是足够的信息。 我的文件的资产名称也是Face。

提前致谢。

如果您已将文件添加到Content项目(那些是4.0的新版本),则要检查的其他事项是确保文件是Texture2D支持的格式之一(.jpg,.png,.bmp ,. TGA)。 之后,单击图像并validation资产名称是否正确,并与您在代码中使用的确切大小写/拼写相匹配,以便按该名称加载它。 如果这是正确的,那么还要确保图像的内容导入器正确设置为Texture2D。 然后要validation的另一件事是确保您的图像位于Content项目的根目录中而不是文件夹中。 如果将其放在文件夹中,则需要在加载文件夹时包含文件夹名称(或多个名称)。

如果您已经validation了所有这些,那么您可能需要发布图像或示例项目,以便我们可以查看并查看是否我们发现了任何方式。

从该屏幕截图看,您需要右键单击“测试”项目并说出“添加内容参考”。 然后,您需要选择“测试(内容)”项目作为该参考。 这应该是在您创建这个新游戏项目时默认发生的,我不确定为什么它看起来像被删除了。

当您使用Visual Studio 2010时,我猜您正在使用XNA 4.0。 如果是这种情况,则会有一个新的Content Reference项目,您可以将所有纹理,声音,模型等放入其中。 如果您在XNA Game项目中创建了一个Content文件夹,则无法使用。

XNA 4.0中, Content Reference项目具有Content Root Directory属性(默认设置为Content ),该属性指定将保存从项目文件夹生成的管道内容的最终输出文件的子目录的名称。 因此,如果您在Content Reference项目中创建Content目录, Face资产将被放置在Content / Content目录中,您将不得不像这样加载它

 mSpriteTexture = Content.Load(@"Content/Face"); 

尽管设置了Content.RootDirectory = "Content"

另一个潜在解决方

检查原始文件(例如MyTexture.bmp )并确保将Build Action设置为Compile

如果您将其设置为其他内容,例如逻辑看似的内容 ,则无效。