Як генерувати Spritefonts для моногами


14

Я просто хочу вивести якийсь текст на екран, використовуючи:

  • моногам 3,0
  • MS Visual Studio 2010 C # Express

У XNA ви змогли додати шрифти до контентного конвеєра досить легко. Але це, мабуть, не так у моногамі. Завантаження файлів TTF за допомогою Content<SpriteFont>.Load()не працює. Чи є можливість генерувати або завантажувати * .spritefont файли або * .xnb файли, що містять шрифтові дані (не вдаючись до встановлення XNA)?


У мене також було багато проблем із з'ясуванням цього підручника, мені це допомогло дуже багато. youtube.com/watch?v=BwtQn02oy6A

Відповіді:


5

Альтернативою є використання наперед створених шрифтів растрових зображень. Ось підручник, який я деякий час писав про використання інструменту BMFont для введення тексту у вашу гру за допомогою бібліотеки MonoGame.Extended .

http://dylanwilson.net/bmfont-rendering-with-monogame-extended


Хоча я не на 100% задоволений цим рішенням, але, напевно, я зараз перейду з растровими шрифтами і сподіваюся на найкраще найближчим часом.
Хої

Зовсім недавно я додав BitmapFont's до MonoGame. Розширена
craftworkgames

@ J2V Я оновив відповідь на точку за робочим посиланням. Це не зовсім так, як старий, але все одно відповідає на питання, на який я вірю.
craftworkgames

@craftworkgames Дякую! Я збираюся видалити попередній коментар.
Яанус Варус

3

Я зіткнувся з тією ж проблемою, що і ти. На щастя, у мене був існуючий проект XNA, який вже використовував файл .spritefont і генерував файл XNB. Я просто скомпілював його і скопіював XNB у свій проект MonoGame, і я можу ним користуватися без проблем.

(Відмова: Я спробував побудувати конвеєр контенту XNA для MonoGame 3.0 бета-версії згідно інструкцій, і через кілька годин я відмовився; він не буде включати проект належним чином у Visual Studio.)


Дякую за пораду. Приємно знати, що ти можеш обійтись таким чином.
Хої

@ Khôi це не ідеально, але він може принаймні дістати вас кудись, поки ви зрозумієте, як інтегрувати проект контентного конвеєра.
ashes999

2

Принаймні, у серпні цього року генерування спрайтонів ще не підтримувалось MonoGame, проте контент конвеєра був головним центром уваги останніх місяців, тому я не здивуюсь, якщо він працює зараз. Звичайно, ви повинні знати синтаксис .spritefontфайлу, який потрібно додати до папки вмісту. Для цього дивіться внизу цієї публікації.

Наскільки я можу сказати, навіть у серпні підтримується завантаження вже складених спрайтонів із файлів XNB. Оскільки ви не хочете встановлювати XNA для генерації цих файлів XNB, ви можете перевірити проект Xpile Content Compiler Project на codeplex.

Ось прикладний .spritefontфайл, щоб ви могли бачити, чи підтримується він на даний момент

<?xml version="1.0" encoding="utf-8"?>
<!--
This file contains an xml description of a font, and will be read by the XNA
Framework Content Pipeline. Follow the comments to customize the appearance
of the font in your game, and to change the characters which are available to draw
with.
-->
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
  <Asset Type="Graphics:FontDescription">

    <!--
    Modify this string to change the font that will be imported.
    -->
    <FontName>Arial</FontName>

    <!--
    Size is a float value, measured in points. Modify this value to change
    the size of the font.
    -->
    <Size>10</Size>

    <!--
    Spacing is a float value, measured in pixels. Modify this value to change
    the amount of spacing in between characters.
    -->
    <Spacing>0</Spacing>

    <!--
    UseKerning controls the layout of the font. If this value is true, kerning information
    will be used when placing characters.
    -->
    <UseKerning>true</UseKerning>

    <!--
    Style controls the style of the font. Valid entries are "Regular", "Bold", "Italic",
    and "Bold, Italic", and are case sensitive.
    -->
    <Style>Regular</Style>

    <!--
    If you uncomment this line, the default character will be substituted if you draw
    or measure text that contains characters which were not included in the font.
    -->
    <!-- <DefaultCharacter>*</DefaultCharacter> -->

    <!--
    CharacterRegions control what letters are available in the font. Every
    character from Start to End will be built and made available for drawing. The
    default range is from 32, (ASCII space), to 126, ('~'), covering the basic Latin
    character set. The characters are ordered according to the Unicode standard.
    See the documentation for more information.
    -->
    <CharacterRegions>
      <CharacterRegion>
        <Start>&#32;</Start>
        <End>&#126;</End>
      </CharacterRegion>
    </CharacterRegions>
  </Asset>
</XnaContent>

На сьогодні (25.12.2012 - веселі різдвяні!), Spritefonts ще не підтримуються моногамою 3.0. Я просто спробував це за вашими вказівками.
Хой

Компілятор контенту XNA також не працює для мене. Оскільки, здається, вам потрібно встановити XNA, щоб запустити компілятор вмісту. Компілятор вмісту XNA будує фіктивний проект, використовуючи XNA у фоновому режимі для збирання файлів .xnb.
Хої

@ Khôi Веселого Різдва і для вас :). Дивно, що проект вимагає встановлення XNA, робить його зовсім марним для більшості сценаріїв!
Рой Т.

Це не дивно, ні марно. MonoGame потрібен власний контент для підтримки інших платформ, таких як Android. Це тимчасовий xrutch - виправлення поза конвеєром вмісту XNA.
ashes999

2

Тепер ви можете це зробити, не встановлюючи нічого зайвого. У абсолютно новому проекті MonoGame ви повинні мати Content.mgcbфайл. Це повинно відобразити додаток MonoGame Pipeline. Ви можете клацнути правою кнопкою миші на Contentдереві на дереві та додати новий елемент. Виберіть "Опис SpriteFont". Це буде складено правильно, і ви зможете завантажити його у свій код.


Дякую! Я шукав години і навіть намагався встановити VS2010 & XNA на WIndows 10 (катастрофа!). Для тих, хто знайде це, наступним кроком буде відкриття файлу .spritefont (ви тільки що створили) у текстовому редакторі та змінення його з 'arial' за замовчуванням на потрібний шрифт.
ПоважніАгенти

Я не розумію, чому більше навчальних посібників не дає вам цих кроків! Я не знайшов жодного, переглядаючи цілий день. Проігнорувати таку просту річ, що трубопровід робить для вас.
ВечерніАгенти

1

Перевірте це, хлопці, я збираю свої * .spritefont файли в .xnb для використання в MonoGame, для мене це єдиний спосіб роботи.

Перевірте це, можливо, і вам допоможе. http://xnacontentcompiler.codeplex.com/


1

Найкраща альтернатива - попередньо згенерувати шрифт xnb через XNA, а потім просто використати їх у проекті Monogame for Windows, або ви можете зробити старий трюк отримання вікна. за допомогою System.Drawing.dll.


0

Я працюю над цим вже кілька днів, намагаюся виправити це, і врешті-решт я змусив себе працювати. Я працюю над Windows8, VS2012, MonoGame. я повинен додати, що це як "monoGame Windows OpenGL Pjoject"

Дозвольте мені провести вас через кроки, які я зробив. 1. Я встановив monGame для VS2012 2. Я встановив WindowsPhone SDK8 3. Я встановив XNA 4.0 для мого VS2010

Я не знаю, чи всі ці кроки не потрібні ...

Отже, ви не можете генерувати .spritefont в vs2012, я створив файл spriteFont у своєму vs2010, а потім додав я до свого проекту vs2012 .... Але це не працювало. І сьогодні вранці я побачив, що URL-адреса цього файлу .spritefont неправильна. Коли я додав його через Explorer Explorer..content -> додати існуючий елемент ... тоді URL був неправий .. "C: \ Users \ admin \ Documents \ Visual Studio 2012 \ Projects \ MyGame \ MyGame \ Content" це не там, де vs2012, де шукав мій файл * .spritefot, він був тут ..--> "C: \ Користувачі \ адміністратор \ Документи \ Visual Studio 2012 \ Проекти \ MyGame \ MyGame \ bin \ WindowsGL \ Налагодження \ Вміст" Я додав i manully, і WOW це працювало. я вставляю тут якийсь код, щоб ви краще бачили, що я зробив .. всередині мого ігрового класу я ставлю ці змінні

    SpriteFont myFont;
    int score;

в моєму методі loadcontent автогенерований VS був

    myFont = Content.Load<SpriteFont>("test");

в моєму методі малювання автогенерований VS був

         spriteBatch.Begin();
     spriteBatch.DrawString(myFont, "Score: " +score, new Vector2(20,10),Color.Red);
        spriteBatch.End();

а потім manully додав мій файл spritefont у потрібну папку

Дивна річ у тому, що я додав фотографії таким чином, і вони потрапили в потрібну папку, але не * .spritefont, вам доведеться мануально додати її в пізнішу папку, щоб змусити мене працювати.

Я сподіваюся, що дещо з цього має сенс для когось, тому що це дало мені найбільший головний біль за останні дні. Я, можливо, забув деякі кроки, і все це може бути марним, але я сподіваюся, що я можу полегшити головні болі для деяких там

І я сподіваюся, що monoGame буде оновлено для виправлення цих проблем ...


0

Я використовував XNB Builder для ручного перетворення їх у .xnbфайли. Просто запустіть додаток, виберіть свої файли, і вони перетворять їх у файли XNB, готові до використання з MonoGame.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.