Zaawansowane wyświetlanie w języku japońskim przy użyciu niestandardowych procesorów treści

Strona zaktualizowana :
Data utworzenia strony :

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.

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

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:

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

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ąć.

「Class1.cs」の削除

Następnie dodaj odwołanie.

参照の追加

Ponieważ narysuj tekst w WPF, potrzebujesz odwołania związanego z WPF. Najpierw zaznacz "PresentationCore" z "Framework".

「PresentationCore」にチェック

Następnie zaznacz "WindowsBase". Teraz naciśnij przycisk OK, aby potwierdzić i ponownie otworzyć Menedżera odwołań.

「WindowsBase」にチェック

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

2つの 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".

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

Wykonaj kompilację, aby sprawdzić, czy została pomyślnie zbudowana.

ビルド結果

DLL jest tworzony.

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

Tworzenie projektu gry

Utwórz projekt dla MonoGame. Nie ma znaczenia, co to jest platforma.

MonoGame のプロジェクトを作成

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.

 DLL を Content フォルダに配置

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.

References を開く

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ć.

DLL のファイル名を入力

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.)

「SpriteFont Description」を選択

Jeśli wybierzesz spritefont, który został dodany, zobaczysz, że procesor czcionek WPF jest dostępny z procesora.

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

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.

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

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.

色変更したテキスト