Monogame için Spritefonts nasıl oluşturulur


14

Sadece şunu kullanarak ekrana bazı metin oluşturmak istiyorum:

  • tek eşleme 3.0
  • MS Visual Studio 2010 C # Express

XNA'da, içerik kanalına kolayca yazı tipi ekleyebildiniz. Ancak tek eşlemede durum böyle görünmüyor. TTF Dosyalarını kullanarak yüklemek Content<SpriteFont>.Load()işe yaramıyor. Font verilerini içeren * .spritefont dosyaları veya * .xnb dosyaları oluşturmanın veya indirmenin herhangi bir yolu var mı (XNA'yı yüklemeye başvurmadan)?


Ayrıca bunu çözmede çok fazla sorun yaşadım, bu eğitim bana çok yardımcı oldu. youtube.com/watch?v=BwtQn02oy6A

Yanıtlar:


5

Bunun yerine, önceden oluşturulmuş bitmap yazı tiplerini kullanmaktır. İşte MonoGame.Extended kütüphanesini kullanarak oyununuza metin almak için BMFont aracını kullanarak bir süre önce yazdığım bir öğretici .

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


Bu çözümden% 100 memnun olmasam da, sanırım şimdilik bitmap yazı tipleriyle gideceğim ve yakın gelecekte en iyisini umacağım.
Khôi

Daha yakın zamanda MonoGame'e BitmapFont's ekledim. Genişletilmiş kütüphane dylanwilson.net/bmfont-rendering-with-monogame-extended
craftworkgames

@ J2V Cevabı çalışan bir bağlantıya işaret edecek şekilde güncelledim. Eskiyle tam olarak aynı değil, ancak hala inandığım soruyu cevaplıyor.
craftworkgames

@craftworkgames Teşekkürler! Önceki yorumumu kaldıracağım.
Jaanus Varus

3

Seninle aynı problemle karşılaştım. Neyse ki, zaten bir .spritefont dosyası kullanan ve XNB dosyasını oluşturan mevcut bir XNA projem vardı. Sadece derledim ve XNB'yi MonoGame projeme kopyaladım ve sorunsuz bir şekilde kullanabilirim.

(Feragatname: Talimatlara göre MonoGame 3.0 beta için XNA içerik boru hattını oluşturmaya çalıştım ve birkaç saat sonra vazgeçtim; projeyi Visual Studio'ya düzgün bir şekilde dahil etmeyeceğim.)


Bahşiş için teşekkürler. Etrafında böyle çalışabileceğini bilmek güzel.
Khôi

@ Khôi mükemmel değil, ancak içerik boru hattı projesini nasıl entegre edeceğinizi anlarken en azından sizi bir yere götürebilir.
ashes999

2

En azından bu yıl Ağustos ayında Spritefonts üreten henüz MonoGame tarafından desteklenmedi, ancak içerik boru hattı son birkaç ayın ana odak noktasıydı, bu yüzden şu anda çalışıyorsa şaşırmam. Elbette .spritefontiçerik klasörünüze eklenmesi gereken bir dosyanın sözdizimini bilmeniz gerekir . Bunun için bu yazının altına bakın.

Anlayabildiğim kadarıyla, Ağustos'a kadar bile, XNB dosyalarından zaten derlenmiş spritefontların yüklenmesi destekleniyor. Bu XNB dosyalarını oluşturmak için XNA yüklemek istemediğiniz için, codeplex üzerindeki XNA Content Compiler Project'i kontrol etmek isteyebilirsiniz .

.spritefontŞu anda desteklenip desteklenmediğini görmek için bir örnek dosya

<?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>

Şu an için (25.12.2012 - mutlu noeller!), Spritefonts henüz tek eşleme 3.0 tarafından desteklenmemektedir. Sadece talimatlarınıza göre denedim.
Khôi

XNA Content Compiler da benim için çalışmaz. Görünüşe göre içerik derleyicisini çalıştırmak için XNA yüklü olmalıdır. XNA İçerik Derleyici .xnb dosyalarını derlemek için arka planda XNA kullanarak kukla bir proje oluşturur.
Khôi

@ Khôi Size de Mutlu Noeller :). Projenin XNA yüklü olması garip, çoğu senaryo için oldukça işe yaramaz hale getiriyor!
Roy T.

Ne garip ne de işe yaramaz. MonoGame, Android gibi diğer platformları desteklemek için kendi içerik kanalına ihtiyaç duyar. Bu geçici bir xrutch - XNA içerik ardışık düzeninden geri dönüş.
ashes999

2

Artık bunu ekstra bir şey yüklemeden yapabilirsiniz. Yepyeni bir MonoGame projesinde bir Content.mgcbdosyaya sahip olmalısınız . Bu MonoGame Pipeline uygulamasını getirmelidir. ContentAğaçtaki düğüme sağ tıklayıp yeni bir öğe ekleyebilirsiniz. `SpriteFont Açıklaması 'nı seçin. Bu doğru bir şekilde derlenecek ve kodunuza yükleyebilmeniz gerekir.


Teşekkür ederim! Saatlerce bakıyordum ve hatta VS2010 & XNA'yı WIndows 10'a (felaket!) Yüklemeyi denedim. Bunu bulan herkes için, bir sonraki adım .spritefont dosyasını (yeni oluşturduğunuz) bir metin düzenleyicide açmak ve varsayılan 'arial'dan istediğiniz yazı tipine değiştirmek olacaktır.
VenerableAgents

Neden daha fazla öğreticinin size bu adımları vermediğini anlamıyorum! Bütün gün baktıktan sonra hiç bulamadım. Pipeline'ın sizin için yaptığı göz ardı etmek çok kolay bir şey.
VenerableAgents


1

En iyi alternatif, xnb yazı tipini önce XNA ile önceden oluşturmak, daha sonra bunları Windows için Monogame projenizde kullanmaktır veya Window'u almanın eski hilesini yapabilirsiniz. System.Drawing.dll dosyası ile.


0

Birkaç gündür bu konuda çalışıyorum, bunu düzeltmeye çalışıyorum ve sonunda ben çalışmak için aldım. Üzerinde çalıştığım şey Windows8, VS2012, MonoGame. Bu "monoGame Windows OpenGL Pjoject" olduğunu eklemeliyim

Sizi attığım adımları atmama izin verin. 1. VS2012 için monGame'i kurdum 2. WindowsPhone SDK8'i kurdum 3. VS2010'um için XNA 4.0'ı kurdum

Tüm bu adımlar nessecery olup olmadığını bilmiyorum ....

Yani vs2012 bir .spritefont üretemezsiniz Benim vs2010 bir spriteFont dosyası oluşturduk ve sonra benim vs2012 projeye i ekledi .... AMA işe yaramadı. Ve bu sabah bu .spritefont dosyasının URL'sinin yanlış olduğunu gördüm. Çözümü explorer..content -> varolan öğeyi ekle ... ile eklediğimde URL yanlıştı .. "C: \ Kullanıcılar \ admin \ Belgeler \ Visual Studio 2012 \ Projeler \ Oyunum \ Oyunum \ İçerik" bu nerede vs2012 nerede * .spritefot dosyamı arıyor burada ..--> "C: \ Kullanıcılar \ admin \ Belgeler \ Visual Studio 2012 \ Projeler \ MyOyun \ BenimOyun \ bin \ WindowsGL \ Hata Ayıklama \ İçerik" i ekledim manully ve WOW işe yaradı. Ben burada bazı kod yapıştırın ben ne yaptıklarını daha iyi görebilirsiniz .. oyun sınıfımda bu değişkenleri koymak

    SpriteFont myFont;
    int score;

VS tarafından otomatik olarak oluşturulan loadcontent yöntemimde

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

VS tarafından otomatik olarak oluşturulan çizim yöntemimde

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

ve daha sonra spritefont dosyamı doğru klasöre ekledim

Garip bir şey bu şekilde resim ekledim ve doğru klasörde sona erdi ama * .spritefont, manully i işe almak için sonraki klasöre eklemek zorunda ..

Umarım bunların bazıları birine mantıklı gelir, çünkü bu bana son günlerde en büyük baş ağrısını verdi. Bazı adımları unutmuş olabilirim ve tüm bunlar işe yaramaz olabilir, ama umarım dışarıdaki bazıları için baş ağrısını hafifletebilirim

Ve umarım monoGame bu sorunları gidermek için güncellenecektir ...


0

XNB Builder kullandım manuel olarak .xnbdosyalara dönüştürmek için . Uygulamayı çalıştırın, dosyalarınızı seçin ve MonoGame ile kullanıma hazır XNB dosyalarına dönüştürün.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.