Afișaj japonez avansat folosind procesoare de conținut personalizate
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.
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:
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.
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".
Apoi, bifați "WindowsBase". Acum apăsați butonul OK pentru a confirma și a deschide din nou Managerul de referință.
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
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".
Efectuați o compilare pentru a vedea dacă a fost construită cu succes.
DLL este creat.
Crearea unui proiect de joc
Creați un proiect pentru MonoGame. Nu contează ce platformă este.
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ă.
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.
Î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.
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.)
Dacă selectați SpriteFont pe care l-ați adăugat, veți vedea că procesorul de font WPF este disponibil de la procesor.
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.
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.