2011-01-10 79 views
2

我对XNA非常陌生,我开始按照在屏幕上绘制图像的教程。 我能够将图像移动到Content文件夹中,但是当我尝试在我的代码中使用它时,无法找到它。没有找到资产XNA

我正在使用资产名称,但我找不到我做错了什么。 该教程使用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

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

提前致谢。

回答

8

如果您已将文件添加到Content项目(这些是4.0的新版本),则其他要检查的内容是确保该文件是Texture2D支持的格式之一(.jpg,.png, .bmp,.tga)。之后,点击图片并验证资产名称是否正确,并与您在代码中使用的确切框/拼音相匹配,以便按照该名称加载。如果这是正确的,那么也要确保图像的Content Importer正确设置为Texture2D。然后再确认一件事是确保您的图像位于Content项目的根目录下,而不是位于文件夹中。如果您将其放在一个文件夹中,那么在加载文件夹时需要包含文件夹名称(或名称)。

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

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

3

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

+0

我的项目被命名为测试。我把文件放到这与该项目创建的“TestContent(内容)”。它是否正确? – Foxvog 2011-01-10 06:55:36

+0

是的,这是正确的。确保在`Content Reference`项目中将`Face`文件设置为Texture。 – 2011-01-10 06:57:02

1

XNA 4.0内容参考项目具有内容根目录属性(设置为内容默认),指定的子目录,将举行由项目产生的管线内容的最终输出文件名称夹。因此,如果您创建内容目录内内容参考项目面对资产将被放置在内容/内容目录,你将不得不加载像这样

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

尽管设置Content.RootDirectory = "Content"

0

另一个可能的解决方案:

检查您的原始文件(例如MyTexture.bmp),并确保生成操作设置为编译

如果您已将其设置为其他内容,例如逻辑上看似内容,它将不起作用。