Не удается загрузить содержимое с помощью 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.
Надеюсь, эта информация поможет.