Avancerad japansk visning med anpassade innehållsprocessorer
Om japansk visning
Textritning i MonoGame använder SpriteFont samt XNA. För SpriteFont, se Visa alfanumeriska tecken och font style-detaljer, eftersom det är samma som XNA.
Om du använder SpriteFont måste du ange vilka tecken du vill använda i förväg. Om det bara är alfanumeriska symboler kan det göras med nästan ingen kostnad som teckenspecifikation och byggtid eftersom det handlar om 100 tecken, men när det gäller japanska blir det tusentals tecken, så byggtiden blir extremt lång. Om du bara anger de tecken som ska användas kan byggtiden förkortas i viss utsträckning, men det är besvärligt att ange vilket tecken som ska användas i omvänd ordning, och det blir ännu mer besvärligt om det finns en ändring i tecknet som ska användas.
Som svar på detta problem, "Ninari GD"webbplats har anpassats för att göra ritning japanska i XNA smidigare (förresten, den plats-run Yuichi Ito - MSFT är en av XNA Framework utvecklare). Detta gör det lättare att ange vilka tecken som ska användas, förkorta byggtiden, dekorera tecken med mera. För mer information, se länken.
Men "WPF font processor" som presenteras på sidan är för XNA och kan inte användas som är i MonoGame. Så jag skulle vilja porta detta till MonoGame.
Ladda ner WPF-teckensnittsprocessorn
Öppna följande webbplatser:
Bläddra ned till två länkar och klicka på länken ovan för att hämta projektet som innehåller sorteringskoden. Den nedre är bara en DLL, så du behöver inte ladda ner den.
Extrahera den nedladdade filen så att du kan hämta innehållet.
Skapa ett WPF-teckensnittsprocessorprojekt
Jag skulle vilja skapa en WPF font processor DLL som fungerar med "Alla CPU", men av någon anledning när jag skapar ett projekt med "Content Pipeline Extension Library" av XNA Framework, kan jag bara skapa den i x86, så jag ska skapa den från en vanlig klass bibliotek här.
När du skapar ett projekt behöver du inte "Class1.cs", så ta bort det.
Lägg sedan till en referens.
Eftersom du ritar text i WPF behöver du en WPF-relaterad referens. Kontrollera först "PresentationCore" från "Framework".
Kontrollera sedan "WindowsBase". Tryck nu på OK för att bekräfta och öppna Referenshanteraren igen.
Välj Bläddra till vänster och klicka på knappen Bläddra nedan.
Öppna följande mappsökväg:
- C:\Program-filer(x86)\MSBuild\MonoGame\v3.0\Verktyg\
Därifrån lägger du till följande två DLL:er:
- MonoGame.Framework.dll
- MonoGame.Framework.Content.Pipeline.dll
Kontrollera att den är markerad och klicka på OK.
Granska de referenser som har lagts till.
Lägg till källkoden från mappen "WpfFontPipeline" från projektet du hämtade till projektet som du för närvarande redigerar.
Det tillstånd du har lagt till.
Kontrollera att byggkonfigurationen är "Release" och "Any CPU".
Utför en version för att se om den har skapats.
DLL skapas.
Skapa ett spelprojekt
Skapa ett projekt för MonoGame. Det spelar ingen roll vilken plattform det är.
Placera den DLL som du just skapade i mappen Innehåll. Det spelar ingen roll var DLL är, men i så fall behöver du en relativ eller absolut väg, så jag lämnar den här för nu.
Öppna Content.mgcb och öppna Referenser med innehåll markerat.
Om du dubbelklickar på "Content.mmcb" för att inte öppna den startar du "MonoGame Pipeline" från Start-menyn.
Skriv filnamnet för den DLL som du just skapade i textrutan eller sökvägen i förhållande till eller absolut sökväg från Content.mgcb.
När du har konfigurerat den visas den fortfarande inte, så när du har sparat projektet avslutar du monoGame Pipeline och öppnar den igen.
Skapar ett sprite-teckensnitt. Välj "Redigera" "Lägg till→Nytt objekt på menyn.
Välj "SpriteFont Description" bland de objekt som ska läggas till. (Förresten, efter att ha lagt SpriteFont, öppnade jag SpriteFont filen för att göra det lättare att se vid körning och ändrade teckensnittsnamn och storlek.)
Om du väljer den SpriteFont som du har lagt till ser du att WPF-teckensnittsprocessorn är tillgänglig från processorn.
Eftersom varje parameter kan ställas in, den här gången försökte jag ställa in den som visas i figuren för tillfället. Tyvärr kan du inte ändra färgen i den aktuella versionen av MonoGame Pipeline.
Försök att bygga. 6860 tecken byggdes eftersom det ingår upp till JIS nivå 2. Ändå är tiden ungefär nio sekunder, så du kan se att det är ganska snabbt.
Vi ritar med spriteFont, och koden är exakt densamma som XNA. Du kan rita text med hjälp av koden som introducerades i "Visa alfanumeriska tecken" som den är. Naturligtvis är japanska också möjligt.
Jag skulle vilja sätta bara den kod som jag lagt till en gång.
Definitionsdelen av fältet. "SpriteFont" har lagts till.
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
SpriteFont font;
Läsa in och skapa teckensnittsdata 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");
}
Rita med japanska i draw-metoden.
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 texten körs ritas den. Det är lite svårt att förstå, men bokstäverna har gränser och blå graderingar inuti.
Det blev lätt att rita japanska så här, och det blev möjligt att dra karaktären med dekoration.
Slutligen kan du inte ändra färgen på textdekorationen på monoGame Pipeline, men du kan öppna filen direkt och ändra den.
När du har sparat och stängt projektet öppnar du MCCB-filen som en textfil.
Om du bläddrar nedåt finns det färginformation i målparametern, så redigera den direkt där.
När du har sparat texten öppnar du monoGame Pipeline igen och bygger den. Du kan se att färgen har ändrats när du kör den.