Актив не найден XNA

Я очень новичок в 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 был необработан. Файл не найден.

Обозреватель решений

Я надеюсь, что этой информации достаточно. Также имя актива моего файла — Face.

Заранее спасибо.


person Foxvog    schedule 10.01.2011    source источник


Ответы (4)


Если вы добавили свой файл в проект Content (это новое для версии 4.0), необходимо также проверить, является ли файл одним из поддерживаемых форматов для Texture2D (.jpg, .png, .bmp, . тга). После этого нажмите на изображение и убедитесь, что имя актива указано правильно и соответствует точному регистру/орфографии, которые вы используете в коде, чтобы загрузить его по этому имени. Если это правильно, также убедитесь, что Content Importer для изображения правильно настроен как Texture2D. И еще одна вещь, которую нужно проверить, - убедиться, что ваше изображение находится в корне проекта Content, а не в папке. Если он у вас есть в папке, вам нужно указать имя папки (или имена) при ее загрузке.

Если вы все это проверили, вам может потребоваться опубликовать изображение или пример проекта, чтобы мы могли посмотреть и посмотреть, заметим ли мы что-нибудь таким образом.

Судя по этому снимку экрана, вам нужно щелкнуть правой кнопкой мыши проект «Тест» и сказать «Добавить ссылку на содержимое». Затем вам нужно будет выбрать свой проект «Test (Content)» в качестве эталона. Это должно было произойти по умолчанию, когда вы создали этот новый игровой проект, и я не уверен, почему он выглядит так, как будто он был удален.

person George Clingerman    schedule 10.01.2011
comment
Я разместил ссылку на обозреватель решений, у меня пока нет представителя для публикации изображений, поэтому я надеюсь, что все в порядке. Насколько я могу судить, я сделал все, как вы предложили, и до сих пор не повезло. - person Foxvog; 10.01.2011
comment
Судя по этому снимку экрана, вам нужно щелкнуть правой кнопкой мыши тестовый проект и сказать «Добавить ссылку на содержимое». Затем вам нужно будет выбрать проект Test (Content) в качестве эталона. Это должно было произойти по умолчанию, когда вы создали этот новый игровой проект, и я не уверен, почему он выглядит так, как будто он был удален. - person George Clingerman; 11.01.2011
comment
В этом была проблема, я не уверен, почему это было так. Большое спасибо за ответ и уроки! - person Foxvog; 12.01.2011

Поскольку вы используете Visual Studio 2010, я предполагаю, что вы используете XNA 4.0. Если это так, есть новый проект Content Reference, в который вы помещаете все свои текстуры, звуки, модели и т. д. Если вы создали папку Content в проекте XNA Game, это не сработает.

person Neil Knight    schedule 10.01.2011
comment
Мой проект называется Test. Я поместил файл в TestContent(Content), который был создан вместе с проектом. Это правильно? - person Foxvog; 10.01.2011
comment
Да, это правильно. Убедитесь, что файл Face установлен как Текстура в проекте Content Reference. - person Neil Knight; 10.01.2011

В проекте XNA 4.0 Content Reference есть свойство Content Root Directory (по умолчанию установлено значение Content), которое определяет имя подкаталога, в котором будет храниться окончательные выходные файлы содержимого конвейера, сгенерированные из папки проекта. Поэтому, если вы создадите каталог Content внутри проекта Content Reference, ресурс Face будет помещен в каталог Content/Content. и вам придется загрузить его так

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

несмотря на установку Content.RootDirectory = "Content"

person Jarek Przygódzki    schedule 22.04.2013

Другое потенциальное решение:

Проверьте исходный файл (например, MyTexture.bmp) и убедитесь, что для параметра Действие сборки установлено значение Компилировать.

Если у вас установлено что-то другое, например логичное Content, это не сработает.

person Ryan Lundy    schedule 20.03.2016