Не удается загрузить содержимое с помощью Monogame с VS2012

мой код

new GameFont(Content.Load<SpriteFont>("LoadingFont"), "LoadingFont")

согласно тому, что я прочитал, вы должны использовать VS2010 для компиляции ваших активов .формат xnb, который я сделал, и поместите их в подпапку содержимого в каталоге bin, что я также сделал. Однако я получаю сообщение об ошибке: "не удалось загрузить ресурс LoadingFont!".

Я не знаю, что еще делать. Я прочитал очень старый пост о том, что активы, сделанные с использованием XNA 4, не будут работать, но я не знаю, все ли еще правда, или как изменить мою версию XNA на 3.1.

какие идеи? Возможно, есть лучший способ без использования VS2010 вообще?

5 ответов


вы добавили содержимое в папку содержимого вашего проекта и установили действие сборки в Content (в окне свойств).

Я не совсем уверен, что процесс заключается в использовании активов .в формате xnb. Я знаю, что это можно сделать таким образом, но обычно я просто добавляю raw-изображения и звуковые файлы в папку содержимого напрямую. Шрифт может быть немного сложнее, чтобы сделать так.

EDIT: 2015

многое изменилось с тех пор, как этот вопрос было написано. В наши дни моногамия имеет свой собственный инструмент трубопровода для обработки содержимого в файлы XNB. Первое, что нужно попробовать, это обработать ваш SpriteFont использование нового конвейера. Таким образом, вы можете избежать необходимости полностью зависеть от XNA.

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

после установлен MonoGame.Продлен вы можете загружать шрифты, созданные с помощью BMFont так же, как и SpriteFont но с помощью класса.

_bitmapFont = Content.Load<BitmapFont>("my-font");

затем визуализируйте текст следующим образом:

 _spriteBatch.Begin();
 _spriteBatch.DrawString(_bitmapFont, "Hello World", new Vector2(100, 200), Color.Red);
 _spriteBatch.End();

у меня есть полный учебник по моему блогу


Я использую MonoGame в VS2012 без проблем;Content.Load<T>("myContent") все еще работает для меня. Одна вещь, которая ловила меня в последнее время (совет: не код, когда лишен сна), заключается в том, что вы должны проверить, что ваши активы настроены на "копировать в выходной каталог" в обозревателе решений, или же, когда игра строится, активы не будут идти с ним, поэтому вы получаете эту ошибку-он не может загружать то, чего нет! Щелкните правой кнопкой мыши на ваших активах и посмотрите в разделе свойства. Если они настроены на "не копировать" , то вы хочу это изменить.


Как @craftworkgames я не могу дать вам полный ответ. Но традиционный конвейер контента, который пришел с XNA 3.1, ушел в 4. Поэтому любые активы нужно загружать немного по-другому. Например, для загрузки a .png актив для отображения спрайта я делаю следующее:

rock = Texture2D.FromStream(GraphicsDevice, TitleContainer.OpenStream(@"Rock-Large-Stones-PT.png"));

и добавить .png-файл для решения как обычно. Я уверен, что это будет что-то подобное для шрифтов, но я еще не совсем понял это ;)


У меня была такая же проблема, не уверен, что вы ее решили или нет, но вот что я сделал.

нажмите на конвейер содержимого Monogame в папке" содержимое".

добавить в spritefont или текстуры.

убедитесь, что в конвейере содержимого Monogame вы изменили действие с "Build"на " Copy"

затем, когда вы хотите загрузить содержимое просто; текстура = содержание.Загрузить ("texture.png");

надеюсь, что это помогает :)


У меня была аналогичная проблема, но с "Windows 8 Store" в качестве целевой платформы... хотя все было в порядке с Windows Open GL версии. В Windows 8 я получил "не удалось загрузить как файл без содержимого", когда я попробовал контент.Загрузить ("Шрифты / TestFont").

Я заменил библиотеки DLL MonoGame в своем решении на MonoGame.Проект Windows8 (я загрузил источники из CodePlex), и я сделал некоторую отладку... и обнаружил, что MonoGame ищет папку содержимого в корзине...\Debug\AppX папка... в то время как во время сборки содержимое папки копируется в другое место. Поэтому, когда я вручную скопировал папку содержимого в папку AppX, ошибка исчезла, и мой прототип игры теперь работает нормально.

Я думаю, что я либо пропустил некоторые настройки в настройках проекта, связанные с AppX (предположительно, эта папка необходима для эмулятора устройства Windows 8?) или... MonoGame должен искать папку содержимого в другом месте... В любом случае я буду обновлять папку содержимого вручную на данный момент, потому что он копируется в неправильное место во время компиляции.

У меня есть папка содержимого в моем проекте, и действие сборки установлено правильно (содержимое)... и "копировать всегда" выбирается, но во время сборки (соответствия) эта папка содержимого копируется в папку отладки, в то время как она должна быть скопирована в папку Debug\AppX, иначе моногамия не может ее найти. (Я, возможно, неправильно с точными путями, потому что я в настоящее время на работе, и проблема на моем домашнем ПК)

может быть, это просто какая-то проблема конфигурации в моей Visual Studio 2012.

Надеюсь, эта информация поможет.