2014-01-09 3 views
0

Я пытаюсь загрузить изображение в классе:Изображение не загружается в классе

myTexture = game.Content.Load<Texture2D>("myTexture"); 

код компилируется нормально, но при запуске он говорит «файл не найден». Но в обозревателе решений определен файл .jpg с именем myTexture.

Я уверен, что это что-то простое, но чего мне не хватает? Я предполагаю, что я должен где-то разговаривать с неправильным каталогом, но я сводил его к самой простой тестовой программе, о которой я могу думать, и все еще получаю ошибку.

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

+0

Вы добавили изображение в проект содержания? Есть ли файл myTexture.xnb в каталоге содержимого? –

+0

В разделе в проводнике решений под названием WindowsGame1 (Content) находится файл myTexture.jpg. Нет никаких файлов .xnb, но я никогда не использовал их раньше, когда загружаюсь непосредственно из класса Game1. – user2056166

+0

. Проверьте свойства файла. Особенно, если это имя актива - 'myTexture'. Файл xnb будет находиться в выходном каталоге. Проверь это. –

ответ

0

Подойдите к просмотру контента в VS, и нажмите на файл изображения, вам должен увидеть свойства изображения. Одним из таких свойств является «Build Action». Это должно быть указано в «Контент», и если это не так, XNA не будет пытаться создать его в файле .xnb и, как таковой, не будет отображаться в Content.Load.

Если вы знаете, что изображение находится в папке содержимого, и вы знаете, что оно настроено как «Контент» в качестве действия сборки, перейдите к сборке и восстановите решение (должно быть, F6, если я помню), и .xnb должен появиться.

+0

Итак, действие сборки было установлено как компиляция, теперь я изменил его на Content, но все равно получаю ту же ошибку. Что я не понимаю, так это то, что я могу загрузить файл просто отлично из игрового класса, его только тогда, когда я пытаюсь его прочитать из класса, который компилятор не может найти файл. – user2056166

+0

@ user2056166 Это звучит как переменная, которую вы назначили текстуре, которая может выйти из области видимости. Просмотрите ответ, который XWaveX опубликовал в комментариях выше, он описывает этот вопрос немного дальше. (Вам нужно создать переменную уровня класса, чтобы использовать изображение вне метода 'LoadContent'.) –

+0

Вы перестроили решение, так как вы его изменили? Кроме того, если вы еще не отметили, процессор должен быть установлен в «Процессор текстуры», а импортером должен быть «Импортёр текстуры». Причина, по которой вы можете загрузить файл с помощью класса File, заключается в том, что он находит фактический файл .jpeg, а Content.Load ищет вещи, которые проходят через конвейер контента, преобразуя файлы в предварительно обработанный .XNB, который хочет XNA. Когда он настроен на компиляцию, XXB никогда не создается, поэтому класс файла может найти .jpeg просто отлично, но Content.Load никогда не получает .XNB, который он хочет. – Sawwave

Смежные вопросы