Avanceret japansk skærm ved hjælp af brugerdefinerede indholdsprocessorer

Side opdateret :
Dato for oprettelse af side :

Om japansk skærm

Teksttegning i MonoGame bruger SpriteFont samt XNA. Se Vise alfanumeriske tegn og oplysninger om typografi for SpriteFont, da det er det samme som XNA. フォントスタイルの詳細

Hvis du bruger SpriteFont, skal du angive de tegn, du vil bruge på forhånd. Hvis det kun er alfanumeriske symboler, kan det gøres med næsten ingen omkostninger som tegnspecifikation og byggetid, fordi det er omkring 100 tegn, men når det kommer til japansk, bliver det tusindvis af tegn, så byggetiden bliver ekstremt lang. Hvis du kun angiver de tegn, der skal bruges, kan buildtiden forkortes til en vis grad, men det er besværligt at angive det tegn, der skal bruges i omvendt rækkefølge, og det bliver endnu mere besværligt, hvis der sker en ændring i det tegn, der skal bruges.

Som svar på dette problem, "Ninari GD"site er blevet tilpasset til at gøre Tegning japansk i XNA mere glat (ved den måde, site-run Yuichi Ito - MSFT er en af de XNA Framework udviklere). Det gør det nemmere at angive de tegn, der skal bruges, forkorte buildtiden, dekorere tegn og meget mere. For mere information, se venligst linket.

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

Men den "WPF font processor" præsenteret på siden er for XNA og kan ikke bruges som det er i MonoGame. Så jeg vil gerne portere dette til MonoGame.

Hent WPF-skrifttypeprocessoren

Åbn følgende websteder:

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

Rul ned til to links, og klik på linket ovenfor for at hente det projekt, der indeholder sorteringskoden. Den nederste er kun en DLL, så du behøver ikke at downloade den.

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

Udpak den hentede fil, så du kan hente indholdet.

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

Oprette et WPF-skrifttypeprojekt

Jeg vil gerne oprette en WPF font processor DLL, der arbejder med "Enhver CPU", men en eller anden grund, når jeg opretter et projekt med "Content Pipeline Extension Library" af XNA Framework, kan jeg kun oprette det i x86, så jeg vil oprette det fra en almindelig klasse bibliotek her.

クラス ライブラリの作成

Når du opretter et projekt, behøver du ikke "Class1.cs", så slet det.

「Class1.cs」の削除

Tilføj derefter en reference.

参照の追加

Da du tegner tekst i WPF, skal du bruge en WPF-relateret reference. Først skal du kontrollere "PresentationCore" fra "Framework".

「PresentationCore」にチェック

Kontroller derefter "WindowsBase". Tryk nu på knappen OK for at bekræfte og åbne Referencestyring igen.

「WindowsBase」にチェック

Vælg Gennemse til venstre, og klik på knappen Gennemse nedenfor.

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

Åbn følgende mappesti:

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

Derfra skal du tilføje følgende to DLL'er:

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

2つの DLL を追加

Sørg for, at den er markeret, og klik på knappen OK.

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

Gennemse de referencer, der er tilføjet.

追加された参照を確認

Tilføj kildekoden fra mappen "WpfFontPipeline" fra det projekt, du har hentet, til det projekt, du redigerer i øjeblikket.

ソースコードを追加

Den tilstand, du har tilføjet.

追加した状態

Kontroller, at buildkonfigurationen er "Release" og "Any CPU".

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

Udfør en build for at se, om den blev bygget.

ビルド結果

DLL er oprettet.

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

Oprette et spilprojekt

Opret et projekt til MonoGame. Det er ligegyldigt, hvilken platform det er.

MonoGame のプロジェクトを作成

Placer den DLL-fil, du lige har oprettet, i mappen Indhold. Det er ligegyldigt, hvor DLL er, men i så fald skal du bruge en relativ eller absolut vej, så jeg vil lade det være her for nu.

 DLL を Content フォルダに配置

Åbn Content.mgcb, og åbn Referencer med indhold markeret.

Hvis du dobbeltklikker på "Content.mmcb" for ikke at åbne den, skal du starte "MonoGame Pipeline" i menuen Start.

References を開く

Skriv filnavnet på den DLL, du lige har oprettet, eller stien i forhold til eller den absolutte sti fra Content.mgcb i tekstboksen.

Når du har konfigureret den, reflekterer DLL'en stadig ikke, så når du har gemt projektet, skal du afslutte monoGame Pipeline og åbne den igen.

DLL のファイル名を入力

Opretter en sprite-skrifttype. Vælg "Rediger" "Tilføj→Nyt element i menuen.

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

Vælg "SpriteFont Beskrivelse" blandt de elementer, der skal tilføjes. (I øvrigt, efter at have tilføjet SpriteFont, åbnede jeg SpriteFont-filen for at gøre det lettere at se på kørselstid og ændrede skrifttypenavnet og -størrelsen.)

「SpriteFont Description」を選択

Hvis du vælger den SpriteFont, du har tilføjet, vil du se, at WPF-skrifttypeprocessoren er tilgængelig fra processoren.

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

Da hver parameter kan indstilles, denne gang forsøgte jeg at sætte den som vist i figuren for tiden. Desværre kan du ikke ændre farven i den aktuelle version af MonoGame Pipeline.

各パラメータ設定

Prøv at bygge. 6860 tegn blev bygget, fordi det omfattede op til JIS niveau 2. Alligevel er tiden omkring ni sekunder, så du kan se, at det er ret hurtigt.

ビルド完了

Nu tegner vi ved hjælp af denne SpriteFont, og koden er nøjagtig den samme som XNA. Du kan tegne tekst ved hjælp af koden indført i "Vis alfanumeriske tegn", som det er. Selvfølgelig er japansk også muligt.

Jeg vil gerne sætte kun den kode, som jeg har tilføjet én gang.

Definitionen del af feltet. "SpriteFont" er blevet tilføjet.

GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

SpriteFont font;

Indlæser og opretter skrifttypedata 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");
}

Tegning med japansk i metoden 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);
}

Når teksten udføres, tegnes den. Det er lidt svært at forstå, men bogstaverne har grænser og blå overgange indeni.

Det blev nemt at tegne japansk som dette, og det blev muligt at tegne karakter med udsmykningen.

テキストの描画結果

Endelig kan du ikke ændre farven på tekstdekorationen på monoGame Pipeline, men du kan åbne filen direkte og ændre den.

Når du har gemt og lukket projektet, skal du åbne .mccb-filen som en tekstfil.

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

Hvis du ruller ned, er der farveoplysninger i målparameteren, så rediger dem direkte der.

色情報を直接編集

Når du har gemt teksten, skal du åbne monoGame Pipeline igen og bygge den. Du kan se, at farven er ændret, når du kører den.

色変更したテキスト