2

我对 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<Texture2D>("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 未处理。找不到文件。

解决方案资源管理器

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

提前致谢。

4

4 回答 4

8

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

如果您已经验证了所有这些,那么您可能需要发布一张图片或一个示例项目,以便我们可以查看一下,看看我们是否以这种方式发现了任何东西。

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

于 2011-01-10T15:24:24.093 回答
3

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

于 2011-01-10T06:51:50.090 回答
1

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

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

尽管设置Content.RootDirectory = "Content"

于 2013-04-22T19:24:44.467 回答
0

另一个潜在的解决方案:

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

如果您将其设置为其他内容,例如看起来合乎逻辑的Content,它将不起作用。

于 2016-03-20T00:47:52.743 回答