2013-08-16 2 views
3

Я пытался это на некоторое время, и я считаю, что я делаю все правильно (насколько код обеспокоен):Загрузка шрифта с помощью monogame с VS2012/13

SpriteFont font = Content.Load<SpriteFont>("Arial"); 

Однако , Я затем прочитал, что вам нужно скомпилировать шрифт с помощью инструмента, который я пробовал, но все они конвертируются из расширения * .spritefont. Это, похоже, не на моей машине, хотя после некоторых исследований мне удалось получить пару файлов TTF.

Некоторые дальнейшие исследования предполагали, что если я выберу «Новый файл» из VS, я должен будет выбрать для создания нового spritefont. Это не похоже на то, что нет в списке для VS2012 или 13.

У меня не было причин работать со шрифтами очень сильно, поэтому я, вероятно, сделаю очевидную ошибку , Какие-нибудь идеи что?

ответ

10

Хорошо, вот быстрый бег вниз, что вы должны знать:

  1. Вы, наверное, уже нашли tutorials about how to use sprite fonts in XNA
  2. Что вы, кажется, хватает XNA Game Studio после того, как вы установили, что вы сможете выбрать параметры в Visual Studio.
  3. Обратите внимание, что вы на самом деле после этого - это «Проект контента». Это будет использоваться для создания файлов spritefont и их компиляции в файлы XNB для использования в MonoGame. Для этого вам также понадобится «поддельный» XNA-проект.
  4. После того как вы скомпилировали файлы XNB, вам необходимо добавить их в папку содержимого проекта MonoGame и установить их в Content/Copy, если они более новые в окне свойств.

После этого ваш код должен работать. Ниже приведен пример проекта с минимальным минимумом, описанным выше: https://dl.dropboxusercontent.com/u/82020056/MonoGameSpriteFonts.zip

В качестве альтернативы можно также пропустить проект XNA Content и использовать MonoGame с исходными файлами активов. Вот как я делаю это в своих играх, и вы можете найти a tutorial on my blog.

EDIT: Я думаю, что это достаточно важно для включения в ответ; команда MonoGame в настоящее время работает над решением, так что XNA Game Studio не потребуется. Похоже, шрифты уже покрыты.

https://github.com/mono/MonoGame/wiki/Content-Build-Pipeline

порт Содержание XNA 4.0 выстраивают трубопровода в настоящее время находится в разработке. Это позволит компилировать активы в оптимизированные бинарные форматы для всех платформ, поддерживаемых MonoGame, без необходимости установки XNA Game Studio 4.0 на ПК с ОС Windows. Компиляция активов будет выполняться при построении проекта и поддерживаться как в Visual Studio (2010 и 2012), так и в MonoDevelop (Windows, Mac OS X и Linux).

+1

Я столкнулся с XNA Game Studio, но, похоже, он требует VS2010, поэтому я предположил, что это устарело. Мне действительно нужно установить VS2010? –

+2

Если вы хотите использовать XNA Content Pipeline, то да, в настоящее время вам нужна Visual Studio 2010. XNA официально не поддерживает более новые версии Visual Studio и никогда не увидит, как Microsoft отказалась от поддержки Framework. –

+1

Я хотел бы добавить, что команда MonoGame работает над заменой конвейера Content, поэтому он не всегда должен быть таким. https://github.com/mono/MonoGame/wiki/Content-Build-Pipeline – craftworkgames

4

Если вы просто хотите нарисовать spritefont, вам не нужна VS2010 или студия XNA.

Сначала создайте .spritefont xml вручную. Вы можете использовать здесь пример: http://msdn.microsoft.com/en-us/library/bb447759.aspx

Затем используйте компилятор содержимого XNA, чтобы скомпилировать его.XNB: http://xnacontentcompiler.codeplex.com/

Вот хороший учебник: http://www.youtube.com/watch?v=BwtQn02oy6A , но обратите внимание, что вам не нужно XNA студии. Редактировать .spritefont xml вручную легко.

Не забудьте указать каталог содержимого: Content.RootDirectory = "Content"; И свойства .xnb должны быть установлены в «Содержимое» и «Копировать всегда». (По крайней мере, это было необходимо для моего проекта Windows 8 MonoGame)

0

Я не думаю, что вам больше нужна XNA.

Просто дважды нажмите на Content.mgcb, чтобы открыть редактор содержимого.

Щелкните правой кнопкой мыши по содержанию -> Добавить -> Новый элемент -> описание Spritefont, укажите его имя, например. "Testfont"

Загрузите SpriteFont в игре:

var font = Content.Load<SpriteFont>("testfont"); 

Используйте его!

spriteBatch.DrawString(font, "hello", new Vector2(10, 10), Color.AliceBlue); 
+0

Нужно ли нам скомпилировать testfont для XNB? –

+0

Кажется, здесь не работает. Компилятор выдает ошибку, как будто у нее нет доступа к папке «Содержимое» (что она явно делает, потому что тогда она компилирует spritefont в .xnb, как и следовало, но она по-прежнему не использует внутриигровые игры). Методы DrawString проходят без ошибок, но ни одна строка не нарисована. Weird. Кто-нибудь еще получил это? – Pyroglyph

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