Affichage japonais avancé à l’aide de processeurs de contenu personnalisés
À 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.
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 :
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.
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 ».
Ensuite, cochez « WindowsBase ». Appuyez maintenant sur le bouton OK pour confirmer et ouvrez à nouveau le Gestionnaire de référence.
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
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 ».
Effectuez une génération pour voir si elle a été construite avec succès.
DLL est créé.
Créer un projet de jeu
Créez un projet pour MonoGame. Peu importe la plate-forme.
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.
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.
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.
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.)
Si vous sélectionnez le SpriteFont que vous avez ajouté, vous verrez que le processeur de police WPF est disponible à partir du processeur.
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.
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.