Geavanceerde Japanse weergave met aangepaste inhoudsverwerkers
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.
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:
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.
Voeg vervolgens een verwijzing toe.
Omdat u tekst tekent in WPF, hebt u een WPF-gerelateerde referentie nodig. Controleer eerst "PresentationCore" van "Framework".
Schakel vervolgens 'WindowsBase' in. Druk nu op de knop OK om de referentiebeheer te bevestigen en opnieuw te openen.
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
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.
Voer een build uit om te zien of deze is gebouwd.
DLL is gemaakt.
Een gameproject maken
Maak een project voor MonoGame. Het maakt niet uit welk platform het is.
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.
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.
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.
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.)
Als u de SpriteFont selecteert die u hebt toegevoegd, ziet u dat de WPF-lettertypeprocessor beschikbaar is in de processor.
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.
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.