Geavanceerde Japanse weergave met aangepaste inhoudsverwerkers

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Over Japanse weergave

Teksttekenen in MonoGame maken zowel SpriteFont als XNA gebruikt. Zie Alfanumerieke tekens en lettertypestijldetails weergeven voor SpriteFont, omdat deze hetzelfde is als XNA.

Als u SpriteFont gebruikt, moet u vooraf de tekens opgeven die u wilt gebruiken. Als het alleen alfanumerieke symbolen, kan worden gedaan met bijna geen kosten als een karakter specificatie en bouwtijd, want het is ongeveer 100 tekens, maar als het gaat om Japans, wordt het duizenden tekens, dus de bouwtijd wordt extreem lang. Als u alleen de tekens opgeeft die moeten worden gebruikt, kan de bouwtijd tot op zekere hoogte worden verkort, maar het is lastig om het teken op te geven dat in omgekeerde richting moet worden gebruikt, en het wordt nog lastiger als er een wijziging in het teken is dat moet worden gebruikt.

In reactie op dit probleem, "Ninari GD"site is aangepast om tekening Japans in XNA soepeler (door de manier, de site-run Yuichi Ito - MSFT is een van de XNA Framework ontwikkelaars). Dit maakt het gemakkelijker om de tekens op te geven om te gebruiken, de bouwtijd te verkorten, tekens te versieren en meer. Zie voor meer informatie de link.

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

Echter, de "WPF font processor" gepresenteerd in de pagina is voor XNA en kan niet worden gebruikt zoals in MonoGame. Ik wil dit naar MonoGame porten.

De WPF-lettertypeprocessor downloaden

Open de volgende sites:

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

Schuif omlaag naar twee koppelingen en klik op de bovenstaande link om het project te downloaden dat de sorteercode bevat. De onderste is slechts een DLL, dus je hoeft het niet te downloaden.

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

Haal het gedownloade bestand eruit, zodat u de inhoud ophalen.

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

Een WPF-lettertypeprocessorproject maken

Ik wil graag een WPF-lettertypeprocessor DLL maken die werkt met "Elke CPU", maar om wat voor reden dan ook wanneer ik een project maak met de "Content Pipeline Extension Library" van het XNA Framework, kan ik het alleen maken in x86, dus ik maak het hier vanuit een reguliere klassenbibliotheek.

クラス ライブラリの作成

Wanneer u een project maakt, hebt u geen "Class1.cs" nodig, dus verwijder het.

「Class1.cs」の削除

Voeg vervolgens een verwijzing toe.

参照の追加

Omdat u tekst tekent in WPF, hebt u een WPF-gerelateerde referentie nodig. Controleer eerst "PresentationCore" van "Framework".

「PresentationCore」にチェック

Schakel vervolgens 'WindowsBase' in. Druk nu op de knop OK om de referentiebeheer te bevestigen en opnieuw te openen.

「WindowsBase」にチェック

Selecteer Bladeren aan de linkerkant en klik op de knop Bladeren hieronder.

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

Open het volgende mappad:

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

Voeg vanaf daar de volgende twee DLL's toe:

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

2つの DLL を追加

Controleer of deze is ingeschakeld en klik op de knop OK.

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

Bekijk de referenties die zijn toegevoegd.

追加された参照を確認

Voeg de broncode uit de map 'WpfFontPipeline' van het project dat u hebt gedownload toe aan het project dat u momenteel bewerkt.

ソースコードを追加

De staat die je hebt toegevoegd.

追加した状態

Controleer of de buildconfiguratie "Release" en 'Elke CPU' is.

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

Voer een build uit om te zien of deze is gebouwd.

ビルド結果

DLL is gemaakt.

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

Een gameproject maken

Maak een project voor MonoGame. Het maakt niet uit welk platform het is.

MonoGame のプロジェクトを作成

Plaats de DLL die u zojuist hebt gemaakt in de map Inhoud. Het maakt niet uit waar de DLL is, maar in dat geval heb je een relatief of absoluut pad nodig, dus ik laat het hier voor nu.

 DLL を Content フォルダに配置

Open Content.mgcb en open Referenties met inhoud geselecteerd.

Als u dubbelklikt op 'Content.mmcb' om deze niet te openen, start u 'MonoGame Pipeline' in het menu Start.

References を開く

Typ in het tekstvak de bestandsnaam van de DLL die u zojuist hebt gemaakt, of het pad ten opzichte van of het absolute pad van Content.mgcb.

Nadat u het hebt ingesteld, weerspiegelt de DLL nog steeds niet, dus zodra u het project opslaat, sluit u monoGame Pipeline af en heropent deze.

DLL のファイル名を入力

Hiermee maakt u een sprite-lettertype. Selecteer 'Bewerken' >Toevoegen→Nieuw item in het menu.

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

Selecteer 'SpriteFont-beschrijving' uit de items die u wilt toevoegen. (Overigens, na het toevoegen van SpriteFont, opende ik de SpriteFont bestand om het gemakkelijker te zien op de tijd van run en veranderde de naam van het lettertype en de grootte.)

「SpriteFont Description」を選択

Als u de SpriteFont selecteert die u hebt toegevoegd, ziet u dat de WPF-lettertypeprocessor beschikbaar is in de processor.

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

Aangezien elke parameter kan worden ingesteld, deze keer heb ik geprobeerd om het in te stellen zoals weergegeven in de figuur voor het moment. Helaas u de kleur in de huidige versie van MonoGame Pipeline niet wijzigen.

各パラメータ設定

Probeer te bouwen. 6860 tekens werden gebouwd omdat het tot JIS niveau 2 omvatte. Toch is de tijd ongeveer negen seconden, dus je zien dat het vrij snel is.

ビルド完了

We tekenen met deze SpriteFont, en de code is precies hetzelfde als XNA. U tekst tekenen met behulp van de code die is geïntroduceerd in 'Alfanumerieke tekens weergeven'. Natuurlijk is Japans ook mogelijk.

Ik wil alleen de code die ik een keer toegevoegd.

Het definitiegedeelte van het veld. "SpriteFont" is toegevoegd.

GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

SpriteFont font;

Lettertypegegevens laden en maken in de methode 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");
}

Tekenen met Japans in de methode Tekenen.

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

Wanneer deze wordt uitgevoerd, wordt de tekst getekend. Het is een beetje moeilijk te begrijpen, maar de letters hebben grenzen en blauwe gradaties binnen.

Het werd gemakkelijk om Japans te tekenen als dit, en het werd mogelijk om het karakter te trekken met de decoratie.

テキストの描画結果

Ten slotte u de kleur van de tekstdecoratie op monoGame Pipeline niet wijzigen, maar u het bestand rechtstreeks openen en wijzigen.

Zodra u het project hebt opgeslagen en gesloten, opent u het MCCB-bestand als tekstbestand.

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

Als u naar beneden scrolt, is er kleurinformatie in de doelparameter, dus bewerk deze daar direct.

色情報を直接編集

Nadat u de tekst hebt opgeslagen, opent u monoGame Pipeline opnieuw en bouwt u deze. U zien dat de kleur is veranderd wanneer u deze uitvoert.

色変更したテキスト