Affichage japonais avancé à l’aide de processeurs de contenu personnalisés

Page mise à jour :
Date de création de la page :

À propos de l’affichage japonais

Le dessin texte de MonoGame utilise SpriteFont ainsi que XNA. Pour SpriteFont, voir Affichage des caractères alphanumériques et des détails de style de police, car il est le même que XNA.

Si vous utilisez SpriteFont, vous devez spécifier les caractères que vous souhaitez utiliser à l’avance. S’il ne s’agit que de symboles alphanumériques, il peut être fait avec presque aucun coût comme une spécification de caractère et de construire le temps parce qu’il est d’environ 100 caractères, mais quand il s’agit de japonais, il devient des milliers de caractères, de sorte que le temps de construction devient extrêmement long. Si vous spécifiez uniquement les caractères à utiliser, le temps de génération peut être raccourci dans une certaine mesure, mais il est gênant de spécifier le caractère à utiliser à l’envers, et il devient encore plus gênant s’il ya un changement dans le caractère à utiliser.

En réponse à ce problème, « Ninari GD »site a été personnalisé pour rendre le dessin japonais dans XNA plus en douceur (soit dit en passant, le site géré Yuichi Ito - MSFT est l’un des développeurs XNA Framework). Il est ainsi plus facile de spécifier les caractères à utiliser, de raccourcir le temps de génération, de décorer les personnages, et plus encore. Pour plus d’informations, veuillez consulter le lien.

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

Toutefois, le « processeur de police WPF » présenté dans la page est pour XNA et ne peut pas être utilisé comme c’est le cas dans MonoGame. J’aimerais donc porter ça sur MonoGame.

Télécharger le processeur de police WPF

Ouvrez les sites suivants :

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

Faites défiler vers le bas vers deux liens, puis cliquez sur le lien ci-dessus pour télécharger le projet qui contient le code de tri. Le plus bas n’est qu’une DLL, de sorte que vous n’avez pas à le télécharger.

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

Veuillez extraire le fichier téléchargé afin que vous puissiez récupérer le contenu.

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

Créer un projet de processeur de police WPF

Je voudrais créer un processeur de police WPF DLL qui fonctionne avec « N’importe quel processeur », mais pour une raison quelconque quand je crée un projet avec la « Bibliothèque d’extension de pipeline de contenu » de la XNA Framework, je ne peux le créer en x86, donc je vais le créer à partir d’une bibliothèque de classes régulières ici.

クラス ライブラリの作成

Lorsque vous créez un projet, vous n’avez pas besoin de « Class1.cs », alors supprimez-le.

「Class1.cs」の削除

Ensuite, ajoutez une référence.

参照の追加

Étant donné que vous dessinez du texte dans WPF, vous avez besoin d’une référence liée au WPF. Tout d’abord, cochez « PresentationCore » de « Framework ».

「PresentationCore」にチェック

Ensuite, cochez « WindowsBase ». Appuyez maintenant sur le bouton OK pour confirmer et ouvrez à nouveau le Gestionnaire de référence.

「WindowsBase」にチェック

Sélectionnez Parcourir à gauche et cliquez sur le bouton Parcourir ci-dessous.

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

Ouvrez le chemin d’accès du dossier suivant :

  • C:\Program Files(x86)\MSBuild\MonoGame\v3.0\Tools\

À partir de là, ajoutez les deux DLL suivants :

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

2つの DLL を追加

Assurez-vous qu’il est coché et cliquez sur le bouton OK.

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

Examinez les références qui ont été ajoutées.

追加された参照を確認

Ajoutez le code source du dossier « pfFontPipelin » du projet que vous avez téléchargé sur le projet que vous modifiez actuellement.

ソースコードを追加

L’état que vous avez ajouté.

追加した状態

Vérifiez que la configuration de génération est « Libération » et « N’importe quel processeur ».

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

Effectuez une génération pour voir si elle a été construite avec succès.

ビルド結果

DLL est créé.

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

Créer un projet de jeu

Créez un projet pour MonoGame. Peu importe la plate-forme.

MonoGame のプロジェクトを作成

Placez la DLL que vous venez de créer dans le dossier Contenu. Il n’a pas d’importance où la DLL est, mais dans ce cas, vous aurez besoin d’un chemin relatif ou absolu, donc je vais le laisser ici pour l’instant.

 DLL を Content フォルダに配置

Ouvrez Content.mgcb et ouvrez Références avec contenu sélectionné.

Si vous double-cliquez sur « Content.mmcb » pour ne pas l’ouvrir, démarrez « Pipeline MonoGame » dans le menu Démarrer.

References を開く

Dans la zone de texte, tapez le nom de fichier de la DLL que vous venez de créer, ou le chemin d’accès par rapport à contenu.mgcb ou le chemin d’accès absolu.

Après l’avoir configuré, la DLL ne reflète toujours pas, donc une fois que vous enregistrez le projet, quittez le pipeline monoGame et rouvrez-le.

DLL のファイル名を入力

Crée une police sprite. Sélectionnez « Modifier » 'Ajouter→Nouvel élément dans le menu.

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

Sélectionnez « Description spriteFont » parmi les éléments pour l’ajouter. (Incidemment, après avoir ajouté SpriteFont, j’ai ouvert le fichier SpriteFont pour le rendre plus facile à voir au moment de l’exécution et a changé le nom de police et la taille.)

「SpriteFont Description」を選択

Si vous sélectionnez le SpriteFont que vous avez ajouté, vous verrez que le processeur de police WPF est disponible à partir du processeur.

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

Puisque chaque paramètre peut être défini, cette fois j’ai essayé de le définir comme indiqué dans la figure pour le moment. Malheureusement, vous ne pouvez pas modifier la couleur dans la version actuelle de MonoGame Pipeline.

各パラメータ設定

Essayez de construire. 6860 caractères ont été construits parce qu’il comprenait jusqu’au niveau JIS 2. Pourtant, le temps est d’environ neuf secondes, de sorte que vous pouvez voir que c’est assez rapide.

ビルド完了

Maintenant, nous dessinons à l’aide de ce SpriteFont, et le code est exactement le même que XNA. Vous pouvez dessiner du texte à l’aide du code introduit dans « Afficher les caractères alphanumériques » tel qu’il est. Bien sûr, le japonais est également possible.

Je voudrais mettre seulement le code que j’ai ajouté une fois.

La partie définition du champ. « SpriteFont » a été ajouté.

GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

SpriteFont font;

Chargement et création de données de police dans la méthode 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");
}

Dessin avec japonais dans la méthode Draw.

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

Une fois exécuté, le texte est dessiné. C’est un peu difficile à comprendre, mais les lettres ont des bordures et des gradations bleues à l’intérieur.

Il est devenu facile de dessiner japonais comme celui-ci, et il est devenu possible de dessiner le personnage avec la décoration.

テキストの描画結果

Enfin, vous ne pouvez pas modifier la couleur de la décoration de texte sur le pipeline monoGame, mais vous pouvez ouvrir le fichier directement et le modifier.

Une fois que vous avez enregistré et fermé le projet, ouvrez le fichier .mccb sous forme de fichier texte.

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

Si vous faites défiler vers le bas, il ya des informations de couleur dans le paramètre cible, donc s’il vous plaît modifier directement là.

色情報を直接編集

Après avoir enregistré le texte, ouvrez à nouveau le pipeline monoGame et construisez-le. Vous pouvez voir que la couleur a changé lorsque vous l’exécutez.

色変更したテキスト