Erweiterte japanische Anzeige mit benutzerdefinierten Inhaltsprozessoren

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Über japanische Anzeige

Die Textzeichnung in MonoGame verwendet SpriteFont sowie XNA. Weitere Informationen finden Sie unter Anzeigen alphanumerischer Zeichen und Schriftstildetails, da es mit XNA identisch ist.

Wenn Sie SpriteFont verwenden, müssen Sie die Zeichen angeben, die Sie im Voraus verwenden möchten. Wenn es nur alphanumerische Symbole sind, kann es fast ohne Kosten als Zeichenspezifikation und Buildzeit durchgeführt werden, weil es etwa 100 Zeichen ist, aber wenn es um Japanisch geht, wird es Zutausende von Zeichen, so dass die Buildzeit extrem lang wird. Wenn Sie nur die zu verwendenden Zeichen angeben, kann die Buildzeit bis zu einem gewissen Grad verkürzt werden, aber es ist problematisch, das Zeichen anzugeben, das umgekehrt verwendet werden soll, und es wird noch problematischer, wenn sich das zu verwendende Zeichen ändert.

Als Reaktion auf dieses Problem wurde die "Ninari GD"-Websiteangepasst, um Drawing Japanese in XNA reibungsloser zu gestalten (übrigens ist der Standortbetrieb Yuichi Ito - MSFT einer der XNA Framework-Entwickler). Dies erleichtert das Angeben der zu verwendenden Zeichen, die Verkürzung der Buildzeit, das Dekorieren von Zeichen und vieles mehr. Weitere Informationen finden Sie unter dem Link.

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

Der auf der Seite dargestellte "WPF-Schriftartprozessor" ist jedoch für XNA und kann nicht wie in MonoGame verwendet werden. Also möchte ich dies auf MonoGame portieren.

WPF Font Processor herunterladen

Öffnen Sie die folgenden Websites:

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

Scrollen Sie nach unten zu zwei Links, und klicken Sie auf den Link oben, um das Projekt herunterzuladen, das den Sortiercode enthält. Die untere ist nur eine DLL, so dass Sie sie nicht herunterladen müssen.

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

Extrahieren Sie die heruntergeladene Datei, damit Sie den Inhalt abrufen können.

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

Erstellen eines WPF-Schriftartprozessorprojekts

Ich möchte eine WPF-Schriftartprozessor-DLL erstellen, die mit "Any CPU" funktioniert, aber aus irgendeinem Grund, wenn ich ein Projekt mit der "Content Pipeline Extension Library" des XNA Framework erstelle, kann ich es nur in x86 erstellen, also erstelle ich es hier aus einer regulären Klassenbibliothek.

クラス ライブラリの作成

Wenn Sie ein Projekt erstellen, benötigen Sie keine "Class1.cs", also löschen Sie es.

「Class1.cs」の削除

Fügen Sie als Nächstes einen Verweis hinzu.

参照の追加

Da Sie Text in WPF zeichnen, benötigen Sie eine WPF-bezogene Referenz. Überprüfen Sie zunächst "PresentationCore" von "Framework".

「PresentationCore」にチェック

Überprüfen Sie als Nächstes "WindowsBase". Drücken Sie nun die Schaltfläche OK, um den Referenz-Manager zu bestätigen und erneut zu öffnen.

「WindowsBase」にチェック

Wählen Sie Durchsuchen auf der linken Seite und klicken Sie auf die Schaltfläche Durchsuchen unten.

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

Öffnen Sie den folgenden Ordnerpfad:

  • C:-Programmdateien(x86)

Fügen Sie von dort aus die folgenden zwei DLLs hinzu:

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

2つの DLL を追加

Stellen Sie sicher, dass es aktiviert ist, und klicken Sie auf die Schaltfläche OK.

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

Überprüfen Sie die hinzugefügten Verweise.

追加された参照を確認

Fügen Sie den Quellcode aus dem Ordner "WpfFontPipeline" aus dem Projekt hinzu, das Sie in das Projekt heruntergeladen haben, das Sie gerade bearbeiten.

ソースコードを追加

Der Zustand, den Sie hinzugefügt haben.

追加した状態

Stellen Sie sicher, dass die Buildkonfiguration "Release" und "Any CPU" ist.

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

Führen Sie einen Build aus, um zu sehen, ob er erfolgreich erstellt wurde.

ビルド結果

DLL wird erstellt.

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

Erstellen eines Spielprojekts

Erstellen Sie ein Projekt für MonoGame. Es spielt keine Rolle, um welche Plattform es sich handelt.

MonoGame のプロジェクトを作成

Platzieren Sie die DLL, die Sie gerade erstellt haben, im Ordner Inhalt. Es spielt keine Rolle, wo sich die DLL befindet, aber in diesem Fall benötigen Sie einen relativen oder absoluten Pfad, also lasse ich ihn vorerst hier.

 DLL を Content フォルダに配置

Öffnen Sie Content.mgcb und öffnen Sie Referenzen mit ausgewählten Inhalten.

Wenn Sie auf "Content.mmcb" doppelklicken, um es nicht zu öffnen, starten Sie "MonoGame Pipeline" im Startmenü.

References を開く

Geben Sie im Textfeld den Dateinamen der gerade erstellten DLL oder den Pfad relativ zu oder den absoluten Pfad aus Content.mgcb ein.

Nachdem Sie es eingerichtet haben, spiegelt die DLL immer noch nicht wider, also beenden Sie monoGame Pipeline, sobald Sie das Projekt gespeichert haben, und öffnen Sie es erneut.

DLL のファイル名を入力

Erstellt eine Sprite-Schriftart. Wählen Sie im Menü "Bearbeiten" >Hinzufügen von neuen Gegenständen aus.

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

Wählen Sie "SpriteFont Description" aus den Elementen, um sie hinzuzufügen. (Übrigens habe ich nach dem Hinzufügen von SpriteFont die SpriteFont-Datei geöffnet, um die Anzeige zur Laufzeit zu erleichtern, und den Schriftnamen und die Schriftgröße geändert.)

「SpriteFont Description」を選択

Wenn Sie die SpriteFont auswählen, die Sie hinzugefügt haben, sehen Sie, dass der WPF-Schriftartprozessor über den Prozessor verfügbar ist.

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

Da jeder Parameter eingestellt werden kann, habe ich dieses Mal versucht, ihn so einzustellen, wie in der Abbildung gezeigt. Leider können Sie die Farbe in der aktuellen Version von MonoGame Pipeline nicht ändern.

各パラメータ設定

Versuchen Sie zu bauen. 6860 Zeichen wurden gebaut, weil sie bis zu JIS-Stufe 2 enthalten waren. Dennoch beträgt die Zeit etwa neun Sekunden, so dass Sie sehen können, dass es ziemlich schnell ist.

ビルド完了

Jetzt zeichnen wir mit diesem SpriteFont, und der Code ist genau derselbe wie XNA. Sie können Text zeichnen, indem Sie den Code verwenden, der in "Alphanumerische Zeichen anzeigen" eingeführt wurde. Natürlich ist japanisch auch möglich.

Ich möchte nur den Code eingeben, den ich einmal hinzugefügt habe.

Der Definitionsteil des Felds. "SpriteFont" wurde hinzugefügt.

GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

SpriteFont font;

Laden und Erstellen von Schriftartdaten in der LoadContent-Methode.

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");
}

Zeichnen mit Japanisch in der Draw-Methode.

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);
}

Bei der Ausführung wird der Text gezeichnet. Es ist ein wenig schwer zu verstehen, aber die Buchstaben haben Grenzen und blaue Abstufungen im Inneren.

Es wurde einfach, Japanisch wie diese zu zeichnen, und es wurde möglich, den Charakter mit der Dekoration zu zeichnen.

テキストの描画結果

Schließlich können Sie die Farbe der Textdekoration in monoGame Pipeline nicht ändern, aber Sie können die Datei direkt öffnen und ändern.

Nachdem Sie das Projekt gespeichert und geschlossen haben, öffnen Sie die .mccb-Datei als Textdatei.

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

Wenn Sie nach unten scrollen, gibt es Farbinformationen im Zielparameter, also bearbeiten Sie sie bitte direkt dort.

色情報を直接編集

Öffnen Sie nach dem Speichern des Textes monoGame Pipeline erneut, und erstellen Sie ihn. Sie können sehen, dass sich die Farbe geändert hat, wenn Sie sie ausführen.

色変更したテキスト