モノゲーム用のスプライトフォントを生成する方法


14

私は次のものを使用して画面にテキストをレンダリングしたいだけです:

  • モノゲーム3.0
  • MS Visual Studio 2010 C#エクスプレス

XNAでは、非常に簡単にコンテンツパイプラインにフォントを追加できました。しかし、これはモノゲームでは当てはまらないようです。を使用Content<SpriteFont>.Load()したTTFファイルの読み込みは機能しません。XNAをインストールせずに、フォントデータを含む* .spritefontファイルまたは* .xnbファイルを生成またはダウンロードする方法はありますか?


また、これを理解するのに多くの問題がありました。このチュートリアルは非常に役立ちました。youtube.com/watch?v=BwtQn02oy6A

回答:


5

代わりに、事前に生成されたビットマップフォントを使用することもできます。MonoGame.Extendedライブラリを使用してゲームにテキストを取り込むためにBMFontツールを使用することについてしばらく前に書いたチュートリアルがあります。

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


私はこのソリューションに100%満足しているわけではありませんが、今のところはビットマップフォントを使用し、近い将来最高のものを期待しています。
コイ

さらに最近では、私はMonoGame.ExtendedライブラリにBitmapFontさんを追加しましたdylanwilson.net/bmfont-rendering-with-monogame-extended
craftworkgames

@ J2V作業リンクを指すように回答を更新しました。古いものとまったく同じではありませんが、それでも私は信じている質問に答えます。
craftworkgames

@craftworkgamesありがとう!以前のコメントを削除します。
ジャアヌスヴァルス

3

私はあなたと同じ問題に遭遇しました。ありがたいことに、すでに.spritefontファイルを使用し、XNBファイルを生成した既存のXNAプロジェクトがありました。コンパイルしてXNBをMonoGameプロジェクトにコピーしただけで、問題なく使用できます。

(免責事項:MonoGame 3.0ベータ版のXNAコンテンツパイプラインを指示通りに構築しようとしましたが、数時間後にあきらめました; Visual Studioにプロジェクトが適切に含まれません。)


ヒントをありがとう。このように回避できることを知っておくと良いでしょう。
コイ

@Khôiは完璧ではありませんが、少なくともコンテンツパイプラインプロジェクトを統合する方法を考えている間に、どこかに到達することができます。
ashes999

2

少なくとも今年の8月、スプライトフォントの生成はMonoGameによってまだサポートされていませんでしたが、ここ数か月間、コンテンツパイプラインが注目されていたので、それが現在動作するかどうかは驚くことではありません。もちろん.spritefont、コンテンツフォルダーに追加する必要があるファイルの構文を知っている必要があります。それについては、この投稿の下部をご覧ください。

私が知る限り、8月にさかのぼっても、XNBファイルからのコンパイル済みのスプライトフォントの読み込みはサポートされています。これらのXNBファイルを生成するためにXNAをインストールしたくないので、codeplexでXNA Content Compiler Projectを確認することをお勧めします。

ここにサンプル.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>

現在(2012年12月25日-merry xmas!)、スプライトフォントはmonogame 3.0ではまだサポートされていません。あなたの指示に従って試してみました。
コイ

XNA Content Compilerも私には実行されません。コンテンツコンパイラを実行するにはXNAをインストールする必要があるようです。XNAコンテンツコンパイラは、バックグラウンドでXNAを使用してダミープロジェクトをビルドし、.xnbファイルをコンパイルします。
コイ

@KhôiMerry Christmas to you :)。プロジェクトにXNAをインストールする必要があるのは奇妙なことで、ほとんどのシナリオでまったく役に立たなくなります!
ロイT.

奇妙なことでも、役に立たないことでもありません。MonoGameには、Androidなどの他のプラットフォームをサポートするための独自のコンテンツパイプラインが必要です。これは一時的なxrutch--XNAコンテンツパイプラインからの便乗です。
ashes999

2

これで、余分なものをインストールせずにこれを実行できます。新しいMonoGameプロジェクトには、Content.mgcbファイルが必要です。これでMonoGame Pipelineアプリが表示されます。Contentツリー内のノードを右クリックして、新しいアイテムを追加できます。「SpriteFont Description」を選択します。これは正しくコンパイルされ、コードにロードできるはずです。


ありがとうございました!何時間も探していましたが、VS2010とXNAをWIndows 10にインストールしようとしました(災害!)。他の人がこれを見つけた場合、次のステップは、テキストエディターで.spritefontファイル(作成したばかり)を開き、既定の 'arial'から目的のフォントに変更することです。
VenerableAgents

これ以上のチュートリアルではこれらの手順が提供されない理由がわかりません!一日中探しても何も見つかりませんでした。パイプラインがあなたのためにすることは、見落とすのがとても簡単です。
VenerableAgents


1

最適な代替方法は、XNAを介してフォントxnbを事前に生成してから、Monogame for Windowsプロジェクトで使用するか、Window.Handleと画面座標ScreenToClientを取得するという古いトリックを実行してから、GDIを使用してテキストを描画することですSystem.Drawing.dllで。


0

私はこれを数日間これに取り組んでおり、これを修正しようとしていて、最終的に私は仕事に着きました。私が取り組んでいるのは、Windows8、VS2012、MonoGameです。これは「monoGame Windows OpenGL Pjoject」として追加する必要があります

私が行った手順を説明します。1. monGame for VS2012をインストールしました2. WindowsPhone SDK8をインストールしました3. VS2010用にXNA 4.0をインストールしました

これらすべてのステップがネセカリーであるかどうかはわかりません....

vs2012で.spritefontを生成できないため、vs2010でspriteFontファイルを生成してから、vs2012プロジェクトにiを追加しました。しかし、うまくいきませんでした。そして今朝、その.spritefontファイルのURLが間違っていることがわかりました。ソリューションエクスプローラーで追加したとき..content->既存のアイテムを追加...その後、URLが間違っていました。 "C:\ Users \ admin \ Documents \ Visual Studio 2012 \ Projects \ MyGame \ MyGame \ Content"これはvs.2012ではなく、*。spritefotファイルがここにありました。--> "C:\ Users \ admin \ Documents \ Visual Studio 2012 \ Projects \ MyGame \ MyGame \ bin \ WindowsGL \ Debug \ Content" iを追加しました手作業で、すごい機能しました。ここにいくつかのコードを貼り付けて、自分が何をしたかを確認できるようにします..ゲームクラス内にこれらの変数を配置します

    SpriteFont myFont;
    int score;

VSによって自動生成された私のloadcontentメソッドでは

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

VSによって自動生成された私のdrawメソッドでは

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

そして、適切なフォルダにスプライトフォントファイルを手作業で追加しました

奇妙なことは、この方法で写真を追加し、*。spritefontではなく正しいフォルダーに入れたということです。作業を進めるには、後のフォルダーに手作業で追加する必要があります。

これが最近私に最大の頭痛の種を与えたので、これのいくつかが誰かにとって意味があることを望みます。私はいくつかの手順を忘れてしまったかもしれませんし、これはすべて役に立たないかもしれませんが、私はそこにあるいくつかの頭痛を和らげることができることを願っています

そして、これらの問題を修正するためにmonoGameが更新されることを願っています...


0

XNB Builderを使用して、手動で.xnbファイルに変換しました。アプリを実行し、ファイルを選択するだけで、MonoGameで使用できるXNBファイルに変換されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.