【问题标题】:Asset not found XNA未找到资产 XNA
【发布时间】:2011-06-06 08:54:25
【问题描述】:

我是 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 未处理。找不到文件。

Solution Explorer

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

提前致谢。

【问题讨论】:

    标签: c# xna xna-3.0


    【解决方案1】:

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

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

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

    【讨论】:

    • 我发布了解决方案资源管理器的链接,我还没有代表发布图片,所以我希望这没问题。据我所知,我已经按照您的建议做了所有事情,但仍然没有运气。
    • 从该屏幕截图看来,您需要右键单击“测试”项目并说“添加内容参考”。然后,您需要选择您的“测试(内容)”项目作为参考。当您创建这个新游戏项目时,默认情况下应该会发生这种情况,但我不确定为什么它看起来像是被删除了。
    • 这就是问题所在,我不知道为什么会这样。非常感谢您的回答和教程!
    【解决方案2】:

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

    【讨论】:

    • 我的项目名为Test。我将文件放入与项目一起创建的“TestContent(Content)”中。这是正确的吗?
    • 是的,没错。确保Face 文件在Content Reference 项目中设置为纹理。
    【解决方案3】:

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

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

    尽管设置Content.RootDirectory = "Content"

    【讨论】:

      【解决方案4】:

      另一个潜在的解决方案:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-30
        • 1970-01-01
        • 1970-01-01
        • 2014-12-12
        • 1970-01-01
        • 2014-10-10
        • 2017-08-21
        • 1970-01-01
        相关资源
        最近更新 更多