Afișaj japonez avansat folosind procesoare de conținut personalizate

Pagina actualizată :
Data creării paginii :

Despre afișarea japoneză

Desenul text din MonoGame utilizează SpriteFont, precum și XNA. Pentru SpriteFont, consultați Afișarea caracterelor alfanumerice și a detaliilor stilului fontului, deoarece este la fel ca XNA.

Dacă utilizați SpriteFont, trebuie să specificați caracterele pe care doriți să le utilizați în avans. În cazul în care este doar simboluri alfanumerice, se poate face cu aproape nici un cost ca o specificație de caractere și de a construi timp, deoarece este de aproximativ 100 de caractere, dar atunci când vine vorba de japoneză, acesta devine mii de caractere, astfel încât timpul de construire devine extrem de lung. Dacă specificați numai caracterele de utilizat, timpul de compilare poate fi scurtat într-o anumită măsură, dar este supărător să specificați caracterul care urmează să fie utilizat în sens invers și devine și mai supărător dacă există o modificare a caracterului de utilizat.

Ca răspuns la această problemă, "Ninari GD"site-ul a fost personalizat pentru a face desen japoneză în XNA mai lin (apropo, site-ul-a alerga Yuichi Ito - MSFT este unul dintre dezvoltatorii XNA Framework). Acest lucru facilitează specificarea caracterelor de utilizat, scurtarea timpului de compilare, decorarea caracterelor și multe altele. Pentru mai multe informații, vă rugăm să consultați link-ul.

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

Cu toate acestea, WPF procesor de font prezentate în pagină este pentru XNA și nu poate fi utilizat așa este în MonoGame. Deci, aș dori să port acest lucru la MonoGame.

Descărcați procesorul de font WPF

Deschideți următoarele site-uri:

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

Defilați în jos la două linkuri și faceți clic pe linkul de mai sus pentru a descărca proiectul care conține codul de sortare. Cea de jos este doar un DLL, astfel încât să nu trebuie să-l descărcați.

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

Extrageți fișierul descărcat, astfel încât să puteți regăsi conținutul.

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

Crearea unui proiect de procesor de fonturi WPF

Aș dori să creeze un procesor de font WPF DLL care funcționează cu "Orice PROCESOR", dar pentru un motiv oarecare, atunci când am crea un proiect cu "Content Pipeline Extension Library" din XNA Framework, eu pot crea doar în x86, așa că voi crea dintr-o bibliotecă de clasă regulate aici.

クラス ライブラリの作成

Când creați un proiect, nu aveți nevoie de "Class1.cs", deci ștergeți-l.

「Class1.cs」の削除

Apoi, adăugați o referință.

参照の追加

Deoarece desenați text în WPF, aveți nevoie de o referință legată de WPF. Mai întâi, bifați "PresentationCore" din "Framework".

「PresentationCore」にチェック

Apoi, bifați "WindowsBase". Acum apăsați butonul OK pentru a confirma și a deschide din nou Managerul de referință.

「WindowsBase」にチェック

Selectați Răsfoire în stânga și faceți clic pe butonul Răsfoire de mai jos.

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

Deschideți următoarea cale de folder:

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

De acolo, adăugați următoarele două DLL-uri:

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

2つの DLL を追加

Asigurați-vă că este bifat și faceți clic pe butonul OK.

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

Examinați referințele care au fost adăugate.

追加された参照を確認

Adăugați codul sursă din folderul "WpfFontPipeline" din proiectul pe care l-ați descărcat în proiectul pe care îl editați în prezent.

ソースコードを追加

Starea pe care ai adăugat-o.

追加した状態

Verificați dacă configurația de compilare este "Release" și "Any CPU".

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

Efectuați o compilare pentru a vedea dacă a fost construită cu succes.

ビルド結果

DLL este creat.

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

Crearea unui proiect de joc

Creați un proiect pentru MonoGame. Nu contează ce platformă este.

MonoGame のプロジェクトを作成

Plasați DLL-ul pe care tocmai l-ați creat în folderul Conținut. Nu contează unde este DLL, dar în acest caz vei avea nevoie de o cale relativă sau absolută, așa că o voi lăsa aici deocamdată.

 DLL を Content フォルダに配置

Deschideți Content.mgcb și deschideți Referințe cu conținut selectat.

Dacă faceți dublu clic pe "Content.mmcb" pentru a nu-l deschide, porniți "MonoGame Pipeline" din meniul Start.

References を開く

În caseta text, tastați numele de fișier al DLL-ului pe care tocmai l-ați creat sau calea relativă sau absolută din Content.mgcb.

După ce ați configurat-o, DLL încă nu reflectă, astfel încât odată ce salvați proiectul, ieșiți din monoGame Pipeline și redeschideți-l.

DLL のファイル名を入力

Creează un font sprite. Selectați "Editare" "Adăugare→Element nou din meniu.

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

Selectați "SpriteFont Description" dintre elementele pentru a o adăuga. (De altfel, după adăugarea SpriteFont, am deschis fișierul SpriteFont pentru a face mai ușor pentru a vedea la momentul de rulare și a schimbat numele fontului și dimensiunea.)

「SpriteFont Description」を選択

Dacă selectați SpriteFont pe care l-ați adăugat, veți vedea că procesorul de font WPF este disponibil de la procesor.

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

Deoarece fiecare parametru poate fi setat, de data aceasta am încercat să-l setați așa se arată în figura pentru moment. Din păcate, nu puteți modifica culoarea în versiunea curentă de MonoGame Pipeline.

各パラメータ設定

Încearcă să construiești. 6860 de caractere au fost construite, deoarece a inclus până la nivelul JIS 2. Totuși, timpul este de aproximativ nouă secunde, astfel încât să puteți vedea că este destul de rapid.

ビルド完了

Acum, desenăm folosind acest SpriteFont, iar codul este exact la fel ca XNA. Puteți desena text utilizând codul introdus în Afișare caractere alfanumerice așa este. Desigur, japoneză este, de asemenea, posibil.

Aș dori să pun doar codul pe care l-am adăugat o dată.

Partea de definiție a câmpului. "SpriteFont" a fost adăugat.

GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

SpriteFont font;

Încărcarea și crearea datelor de font în metoda 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");
}

Desenarea cu japoneză în metoda Desenare.

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

Când este executat, textul este desenat. E cam greu de înțeles, dar literele au borduri și gradații albastre înăuntru.

A devenit ușor să deseneze japoneză ca aceasta, și a devenit posibil să se deseneze caracterul cu decor.

テキストの描画結果

În cele din urmă, nu puteți modifica culoarea decorării textului pe monoGame Pipeline, dar puteți deschide fișierul direct și să-l modificați.

După ce ați salvat și ați închis proiectul, deschideți fișierul .mccb ca fișier text.

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

Dacă defilați în jos, există informații despre culoare în parametrul țintă, așa că vă rugăm să le editați direct acolo.

色情報を直接編集

După salvarea textului, deschideți din nou monoGame Pipeline și construiți-l. Puteți vedea că culoarea s-a modificat atunci când o executați.

色変更したテキスト