Zaawansowane wyświetlanie w języku japońskim przy użyciu niestandardowych procesorów treści
Informacje o japońskim wyświetlaczu
Rysunek tekstowy w MonoGame używa SpriteFont, jak również XNA. W polu SpriteFont zobacz Wyświetlanie znaków alfanumerycznej i szczegółów stylu czcionki, ponieważ jest on taki sam jak XNA.
Jeśli używasz SpriteFont, należy określić znaki, które mają być używane z wyprzedzeniem. Jeśli jest to tylko symbole alfanumeryczne, można to zrobić prawie bez żadnych kosztów jako specyfikacja znaków i czas kompilacji, ponieważ jest to około 100 znaków, ale jeśli chodzi o japoński, staje się tysiące znaków, więc czas kompilacji staje się bardzo długi. Jeśli określisz tylko znaki, które mają być używane, czas kompilacji może zostać skrócony do pewnego stopnia, ale jest kłopotliwe określenie znaku, który ma być używany w odwrotnej kolejności, a staje się jeszcze bardziej kłopotliwe, jeśli nastąpi zmiana w znaku, który ma być używany.
W odpowiedzi na ten problem strona "Ninari GD"została dostosowana do bardziej płynnego rysowania japońskiego w XNA (nawiasem mówiąc, strona-run Yuichi Ito - MSFT jest jednym z programistów XNA Framework). Ułatwia to określenie znaków do użycia, skrócenie czasu kompilacji, ozdabianie znaków i nie tylko. Aby uzyskać więcej informacji, zapoznaj się z linkiem.
Jednak "Procesor czcionek WPF" przedstawiony na stronie jest dla XNA i nie może być używany, jak jest w MonoGame. Więc chciałbym przenieść to do MonoGame.
Pobierz procesor czcionek WPF
Otwórz następujące witryny:
Przewiń w dół do dwóch łączy i kliknij powyższe łącze, aby pobrać projekt zawierający kod sortowania. Niższa jest tylko DLL, więc nie trzeba go pobierać.
Pobierz pobrany plik, aby można było pobrać zawartość.
Tworzenie projektu procesora czcionek WPF
Chciałbym utworzyć bibliotekę DLL procesora czcionek WPF, który współpracuje z "Dowolnym procesorem", ale z jakiegoś powodu, gdy tworzę projekt z "Biblioteką rozszerzenia potoku zawartości" XNA Framework, mogę go utworzyć tylko w x86, więc utworzę go z regularnej biblioteki klas tutaj.
Podczas tworzenia projektu nie trzeba "Class1.cs", więc go usunąć.
Następnie dodaj odwołanie.
Ponieważ narysuj tekst w WPF, potrzebujesz odwołania związanego z WPF. Najpierw zaznacz "PresentationCore" z "Framework".
Następnie zaznacz "WindowsBase". Teraz naciśnij przycisk OK, aby potwierdzić i ponownie otworzyć Menedżera odwołań.
Wybierz pozycję Przeglądaj po lewej stronie i kliknij przycisk Przeglądaj poniżej.
Otwórz następującą ścieżkę folderu:
- C:\Pliki programu(x86)\MSBuild\MonoGame\v3.0\Narzędzia\
W tym miejscu dodaj następujące dwie biblioteki DLL:
- MonoGame.Framework.dll
- MonoGame.Framework.Content.Pipeline.dll
Upewnij się, że jest zaznaczona i kliknij przycisk OK.
Przejrzyj dodane odwołania.
Dodaj kod źródłowy z folderu "WpfFontPipeline" z projektu pobranego do aktualnie edytowanym projektu.
Stan, który dodałeś.
Sprawdź, czy konfiguracja kompilacji jest "Release" i "Any CPU".
Wykonaj kompilację, aby sprawdzić, czy została pomyślnie zbudowana.
DLL jest tworzony.
Tworzenie projektu gry
Utwórz projekt dla MonoGame. Nie ma znaczenia, co to jest platforma.
Umieść bibliotekę DLL utworzoną właśnie w folderze Zawartość. Nie ma znaczenia, gdzie jest DLL, ale w takim przypadku będziesz potrzebować ścieżki względnej lub bezwzględnej, więc zostawię ją tutaj na razie.
Otwórz plik Content.mgcb i otwórz pozycję Odwołania z zaznaczoną zawartością.
Jeśli klikniesz dwukrotnie "Content.mmcb", aby go nie otworzyć, uruchom "Potok MonoGame" z menu Start.
W polu tekstowym wpisz nazwę pliku właśnie utworzonej biblioteki DLL lub ścieżkę względem ścieżki bezwzględnej lub ścieżkę bezwzględną z pliku Content.mgcb.
Po skonfigurowaniu biblioteki DLL nadal nie odzwierciedla, więc po zapisaniu projektu, zamknij potok monoGame i ponownie go otworzyć.
Tworzy czcionkę sprite. Wybierz "Edytuj" >Dodaj→Nowy element z menu.
Wybierz "Opis SpriteFont" spośród elementów, aby go dodać. (Nawiasem mówiąc, po dodaniu SpriteFont, otworzyłem plik SpriteFont, aby ułatwić widzenie w czasie wykonywania i zmienił nazwę czcionki i rozmiar.)
Jeśli wybierzesz spritefont, który został dodany, zobaczysz, że procesor czcionek WPF jest dostępny z procesora.
Ponieważ każdy parametr można ustawić, tym razem próbowałem ustawić go tak, jak pokazano na rysunku na razie. Niestety nie można zmienić koloru w bieżącej wersji potoku MonoGame.
Spróbuj zbudować. Zbudowano 6860 znaków, ponieważ zawierała ona do poziomu 2 JIS. Mimo to, czas wynosi około dziewięciu sekund, więc widać, że jest dość szybki.
Teraz rysujemy przy użyciu tego SpriteFonta, a kod jest dokładnie taki sam jak XNA. Tekst można rysować za pomocą kodu wprowadzonego w "Wyświetlanie znaków alfanumeryczne", jak to jest. Oczywiście możliwe jest również japońskie.
Chciałbym umieścić tylko kod, który dodałem raz.
Część definicji pola. Dodano "SpriteFont".
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
SpriteFont font;
Ładowanie i tworzenie danych czcionki w LoadContent metody.
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");
}
Rysowanie za pomocą języka japońskiego w Draw metody.
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);
}
Po wykonaniu tekst jest rysowany. To trochę trudne do zrozumienia, ale litery mają granice i niebieskie gradacji wewnątrz.
Łatwo było narysować japoński tak, i stało się możliwe, aby narysować postać z dekoracji.
Na koniec nie można zmienić koloru dekoracji tekstu w potoku monoGame, ale można otworzyć plik bezpośrednio i zmodyfikować go.
Po zapisaniu i zamknięciu projektu otwórz plik .mccb jako plik tekstowy.
Jeśli przewiń w dół, w parametrze docelowym znajdują się informacje o kolorze, więc edytuj je bezpośrednio tam.
Po zapisaniu tekstu otwórz potok monoGame ponownie i skompiluj go. Widać, że kolor zmienił się po jego uruchomieniu.