Avancerad japansk visning med anpassade innehållsprocessorer

Sidan uppdaterad :
Datum för skapande av sida :

Om japansk visning

Textritning i MonoGame använder SpriteFont samt XNA. För SpriteFont, se Visa alfanumeriska tecken och font style-detaljer, eftersom det är samma som XNA.

Om du använder SpriteFont måste du ange vilka tecken du vill använda i förväg. Om det bara är alfanumeriska symboler kan det göras med nästan ingen kostnad som teckenspecifikation och byggtid eftersom det handlar om 100 tecken, men när det gäller japanska blir det tusentals tecken, så byggtiden blir extremt lång. Om du bara anger de tecken som ska användas kan byggtiden förkortas i viss utsträckning, men det är besvärligt att ange vilket tecken som ska användas i omvänd ordning, och det blir ännu mer besvärligt om det finns en ändring i tecknet som ska användas.

Som svar på detta problem, "Ninari GD"webbplats har anpassats för att göra ritning japanska i XNA smidigare (förresten, den plats-run Yuichi Ito - MSFT är en av XNA Framework utvecklare). Detta gör det lättare att ange vilka tecken som ska användas, förkorta byggtiden, dekorera tecken med mera. För mer information, se länken.

WPF フォントプロセッサーで作成されたテキストの描画

Men "WPF font processor" som presenteras på sidan är för XNA och kan inte användas som är i MonoGame. Så jag skulle vilja porta detta till MonoGame.

Ladda ner WPF-teckensnittsprocessorn

Öppna följande webbplatser:

ひにけにGD - 真・簡単(かもしれない)日本語表示

Bläddra ned till två länkar och klicka på länken ovan för att hämta projektet som innehåller sorteringskoden. Den nedre är bara en DLL, så du behöver inte ladda ner den.

プロジェクトをダウンロード

Extrahera den nedladdade filen så att du kan hämta innehållet.

ダウンロードされたファイル

Skapa ett WPF-teckensnittsprocessorprojekt

Jag skulle vilja skapa en WPF font processor DLL som fungerar med "Alla CPU", men av någon anledning när jag skapar ett projekt med "Content Pipeline Extension Library" av XNA Framework, kan jag bara skapa den i x86, så jag ska skapa den från en vanlig klass bibliotek här.

クラス ライブラリの作成

När du skapar ett projekt behöver du inte "Class1.cs", så ta bort det.

「Class1.cs」の削除

Lägg sedan till en referens.

参照の追加

Eftersom du ritar text i WPF behöver du en WPF-relaterad referens. Kontrollera först "PresentationCore" från "Framework".

「PresentationCore」にチェック

Kontrollera sedan "WindowsBase". Tryck nu på OK för att bekräfta och öppna Referenshanteraren igen.

「WindowsBase」にチェック

Välj Bläddra till vänster och klicka på knappen Bläddra nedan.

「参照」ボタンをクリック

Öppna följande mappsökväg:

  • C:\Program-filer(x86)\MSBuild\MonoGame\v3.0\Verktyg\

Därifrån lägger du till följande två DLL:er:

  • MonoGame.Framework.dll
  • MonoGame.Framework.Content.Pipeline.dll

2つの DLL を追加

Kontrollera att den är markerad och klicka på OK.

チェックされていることを確認

Granska de referenser som har lagts till.

追加された参照を確認

Lägg till källkoden från mappen "WpfFontPipeline" från projektet du hämtade till projektet som du för närvarande redigerar.

ソースコードを追加

Det tillstånd du har lagt till.

追加した状態

Kontrollera att byggkonfigurationen är "Release" och "Any CPU".

ビルド構成が「Release」「Any CPU」になっていることを確認

Utför en version för att se om den har skapats.

ビルド結果

DLL skapas.

DLL が作成されていることを確認

Skapa ett spelprojekt

Skapa ett projekt för MonoGame. Det spelar ingen roll vilken plattform det är.

MonoGame のプロジェクトを作成

Placera den DLL som du just skapade i mappen Innehåll. Det spelar ingen roll var DLL är, men i så fall behöver du en relativ eller absolut väg, så jag lämnar den här för nu.

 DLL を Content フォルダに配置

Öppna Content.mgcb och öppna Referenser med innehåll markerat.

Om du dubbelklickar på "Content.mmcb" för att inte öppna den startar du "MonoGame Pipeline" från Start-menyn.

References を開く

Skriv filnamnet för den DLL som du just skapade i textrutan eller sökvägen i förhållande till eller absolut sökväg från Content.mgcb.

När du har konfigurerat den visas den fortfarande inte, så när du har sparat projektet avslutar du monoGame Pipeline och öppnar den igen.

DLL のファイル名を入力

Skapar ett sprite-teckensnitt. Välj "Redigera" "Lägg till→Nytt objekt på menyn.

スプライトフォントを作成

Välj "SpriteFont Description" bland de objekt som ska läggas till. (Förresten, efter att ha lagt SpriteFont, öppnade jag SpriteFont filen för att göra det lättare att se vid körning och ändrade teckensnittsnamn och storlek.)

「SpriteFont Description」を選択

Om du väljer den SpriteFont som du har lagt till ser du att WPF-teckensnittsprocessorn är tillgänglig från processorn.

「WPF フォントプロセッサー」が選択できる

Eftersom varje parameter kan ställas in, den här gången försökte jag ställa in den som visas i figuren för tillfället. Tyvärr kan du inte ändra färgen i den aktuella versionen av MonoGame Pipeline.

各パラメータ設定

Försök att bygga. 6860 tecken byggdes eftersom det ingår upp till JIS nivå 2. Ändå är tiden ungefär nio sekunder, så du kan se att det är ganska snabbt.

ビルド完了

Vi ritar med spriteFont, och koden är exakt densamma som XNA. Du kan rita text med hjälp av koden som introducerades i "Visa alfanumeriska tecken" som den är. Naturligtvis är japanska också möjligt.

Jag skulle vilja sätta bara den kod som jag lagt till en gång.

Definitionsdelen av fältet. "SpriteFont" har lagts till.

GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

SpriteFont font;

Läsa in och skapa teckensnittsdata i metoden LoadContent.

protected override void LoadContent()
{
  // Create a new SpriteBatch, which can be used to draw textures.
  spriteBatch = new SpriteBatch(GraphicsDevice);

  // TODO: use this.Content to load your game content here

  // フォントデータの読み込み
  font = Content.Load<SpriteFont>("Font");
}

Rita med japanska i draw-metoden.

protected override void Draw(GameTime gameTime)
{
  GraphicsDevice.Clear(Color.CornflowerBlue);

  // TODO: Add your drawing code here
  spriteBatch.Begin();

  spriteBatch.DrawString(font, "真・簡単(かもしれない)日本語表示",
                    new Vector2(50, 50), Color.White);

  spriteBatch.DrawString(font, @"・OpenTypeフォント対応
・処理速度の高速化
・JIS漢字追加機能
・文字装飾",
              new Vector2(50, 150), Color.White);

  spriteBatch.End();

  base.Draw(gameTime);
}

När texten körs ritas den. Det är lite svårt att förstå, men bokstäverna har gränser och blå graderingar inuti.

Det blev lätt att rita japanska så här, och det blev möjligt att dra karaktären med dekoration.

テキストの描画結果

Slutligen kan du inte ändra färgen på textdekorationen på monoGame Pipeline, men du kan öppna filen direkt och ändra den.

När du har sparat och stängt projektet öppnar du MCCB-filen som en textfil.

「.mgcb」ファイルをテキストファイルで開く

Om du bläddrar nedåt finns det färginformation i målparametern, så redigera den direkt där.

色情報を直接編集

När du har sparat texten öppnar du monoGame Pipeline igen och bygger den. Du kan se att färgen har ändrats när du kör den.

色変更したテキスト