Иерархия папок XNA - PullRequest
1 голос
/ 11 июня 2011

Хорошо, я новичок в XNA, и я просто пытаюсь получить изображение для отображения на экране.Я полагаю, что я добавил изображения в папку содержимого в программе VS2010 ОДНАКО, когда я пытаюсь запустить программу, я получаю сообщение об ошибке «Файл не найден».Поэтому мне интересно, в какой папке находится изображение, чтобы можно было просто вызывать файл изображения Tank.png.код прост:

namespace Aceldama_Windows_Game
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
    GraphicsDeviceManager graphics;
    SpriteBatch spriteBatch;
    Vector2 mPosition = new Vector2(0, 0);
    Texture2D mSpriteTexture;
    public Game1()
    {
        graphics = new GraphicsDeviceManager(this);
        Content.RootDirectory = "Content";

    }

    /// <summary>
    /// Allows the game to perform any initialization it needs to before starting to run.
    /// This is where it can query for any required services and load any non-graphic
    /// related content.  Calling base.Initialize will enumerate through any components
    /// and initialize them as well.
    /// </summary>
    protected override void Initialize()
    {
        // TODO: Add your initialization logic here

        base.Initialize();
    }

    /// <summary>
    /// LoadContent will be called once per game and is the place to load
    /// all of your content.
    /// </summary>
    protected override void LoadContent()
    {
        // Create a new SpriteBatch, which can be used to draw textures.
        spriteBatch = new SpriteBatch(GraphicsDevice);

        // TODO: use this.Content to load your game content here
        mSpriteTexture = this.Content.Load<Texture2D>("Tank");
    }

    /// <summary>
    /// UnloadContent will be called once per game and is the place to unload
    /// all content.
    /// </summary>
    protected override void UnloadContent()
    {
        // TODO: Unload any non ContentManager content here
    }

    /// <summary>
    /// Allows the game to run logic such as updating the world,
    /// checking for collisions, gathering input, and playing audio.
    /// </summary>
    /// <param name="gameTime">Provides a snapshot of timing values.</param>
    protected override void Update(GameTime gameTime)
    {
        // Allows the game to exit
        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            this.Exit();

        // TODO: Add your update logic here

        base.Update(gameTime);
    }

    /// <summary>
    /// This is called when the game should draw itself.
    /// </summary>
    /// <param name="gameTime">Provides a snapshot of timing values.</param>
    protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);

        // TODO: Add your drawing code here
        spriteBatch.Begin();
        spriteBatch.Draw(mSpriteTexture, mPosition, Color.White);
        spriteBatch.End();

        base.Draw(gameTime);
    }
}

}

В какую папку я должен поместить изображение, чтобы можно было напрямую вызывать файл без указания полного пути к файлу?По сути, проблема в том, что кажется, что независимо от того, где я размещаю файл tank.png (находится ли он в файле с исполняемыми файлами / c # или в папке содержимого)

Ответы [ 2 ]

0 голосов
/ 11 июня 2011

Итак, я выяснил, в чем проблема после бесконечного поиска в сети; p it Код был в порядке, проблема была в том, что мне нужно было создать ссылку на папку содержимого в проекте. загрузил фотографию обозревателя решений, чтобы показать, что мне нужно сделать! enter image description here

В разделе «Ссылки на контент» у меня не было добавлено «Aceldama_windows_gameContent». Это должно быть там, чтобы ссылаться на папку с содержимым игры с изображениями в ней!

0 голосов
/ 11 июня 2011

XNA Content Pipeline берет элементы, на которые ссылается ваш контент-проект, и преобразует их в файлы XNB. ContentManager затем загружает эти файлы XNB.

Итак, первое, что нужно проверить, это то, что файлы XNB создаются там, где вы ожидаете их в выходном каталоге.

В соответствии с кодом, который вы опубликовали, с Content.RootDirectory = "Content" и Content.Load<Texture2D>("Tank"), при условии отладки Windows, он будет искать файл:

 bin/x86/Debug/Content/Tank.xnb

Если вы изменили выходной каталог проекта контента, вам нужно также изменить RootDirectory, установленный в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...