Visualización japonesa avanzada con procesadores de contenido personalizados

Actualización de la página :
Fecha de creación de la página :

Acerca de la exhibición japonesa

El dibujo de texto en MonoGame utiliza SpriteFont, así como XNA. Para SpriteFont, consulte Visualización de caracteres alfanuméricos y detalles de estilo de fuente, ya que es el mismo que XNA.

Si utiliza SpriteFont, debe especificar los caracteres que desea utilizar con antelación. Si sólo son símbolos alfanuméricos, se puede hacer casi sin costo como especificación de caracteres y tiempo de compilación porque es de unos 100 caracteres, pero cuando se trata de japonés, se convierte en miles de caracteres, por lo que el tiempo de compilación se convierte en extremadamente largo. Si especifica solo los caracteres que se van a utilizar, el tiempo de compilación se puede acortar hasta cierto punto, pero es problemático especificar el carácter que se usará en sentido inverso, y se vuelve aún más problemático si hay un cambio en el carácter que se va a utilizar.

En respuesta a este problema, el sitio "Ninari GD"se ha personalizado para que Drawing Japanese in XNA sea más fluido (por cierto, el sitio dirigido por Yuichi Ito - MSFT es uno de los desarrolladores de XNA Framework). Esto facilita la especificación de los caracteres que se va a usar, acortar el tiempo de compilación, decorar personajes y mucho más. Para obtener más información, consulte el enlace.

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

Sin embargo, el "procesador de fuentes WPF" presentado en la página es para XNA y no se puede usar como está en MonoGame. Así que me gustaría portar esto a MonoGame.

Descargue el procesador de fuentes WPF

Abra los siguientes sitios:

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

Desplácese hacia abajo hasta dos vínculos y haga clic en el vínculo anterior para descargar el proyecto que contiene el código de ordenación. El inferior es sólo un archivo DLL, por lo que no es necesario descargarlo.

プロジェクトをダウンロード

Por favor, extraiga el archivo descargado para que pueda recuperar el contenido.

ダウンロードされたファイル

Crear un proyecto de procesador de fuentes WPF

Me gustaría crear un archivo DLL de procesador de fuentes WPF que funciona con "Cualquier CPU", pero por alguna razón cuando creo un proyecto con la "Biblioteca de extensión de canalización de contenido" de XNA Framework, solo puedo crearlo en x86, por lo que lo crearé a partir de una biblioteca de clases normal aquí.

クラス ライブラリの作成

Cuando crea un proyecto, no necesita "Class1.cs", así que elimínelo.

「Class1.cs」の削除

A continuación, agregue una referencia.

参照の追加

Dado que dibuja texto en WPFWPF, necesita una referencia relacionada con WPFWPF. En primer lugar, marque "PresentationCore" en "Framework".

「PresentationCore」にチェック

A continuación, marque "WindowsBase". Ahora presione el botón OK para confirmar y abrir el Administrador de referencias de nuevo.

「WindowsBase」にチェック

Seleccione Examinar a la izquierda y haga clic en el botón Examinar a continuación.

「参照」ボタンをクリック

Abra la siguiente ruta de carpeta:

  • C:'Archivos de programa(x86)'MSBuild''MonoGame'v3.0'Herramientas'

A partir de ahí, agregue los dos archivos DLL siguientes:

  • MonoGame.Framework.dll
  • MonoGame.Framework.Content.Pipeline.dll

2つの DLL を追加

Asegúrese de que está marcada y haga clic en el botón Aceptar.

チェックされていることを確認

Revise las referencias que se han agregado.

追加された参照を確認

Agregue el código fuente de la carpeta "WpfFontPipeline" del proyecto que descargó al proyecto que está editando actualmente.

ソースコードを追加

El estado que agregó.

追加した状態

Compruebe que la configuración de compilación es "Liberación" y "Cualquier CPU".

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

Realice una compilación para ver si se ha creado correctamente.

ビルド結果

Se crea DLL.

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

Crear un proyecto de juego

Cree un proyecto para MonoGame. No importa qué plataforma sea.

MonoGame のプロジェクトを作成

Coloque el archivo DLL que acaba de crear en la carpeta Contenido. No importa dónde esté el archivo DLL, pero en ese caso necesitará una ruta relativa o absoluta, así que lo dejaré aquí por ahora.

 DLL を Content フォルダに配置

Abra Content.mgcb y abra Referencias con contenido seleccionado.

Si hace doble clic en "Content.mmcb" para no abrirlo, inicie "MonoGame Pipeline" desde el menú Inicio.

References を開く

En el cuadro de texto, escriba el nombre de archivo del archivo DLL que acaba de crear o la ruta de acceso relativa o absoluta de Content.mgcb.

Después de configurarlo, el archivo DLL sigue sin reflejarse, por lo que una vez que guarde el proyecto, salga de monoGame Pipeline y vuelva a abrirlo.

DLL のファイル名を入力

Crea una fuente sprite. Seleccione "Editar" >Agregar nuevo elemento en el menú.

スプライトフォントを作成

Seleccione "SpriteFont Description" entre los elementos para agregarlo. (Por cierto, después de agregar SpriteFont, abrí el archivo SpriteFont para que sea más fácil de ver en tiempo de ejecución y cambió el nombre y el tamaño de la fuente.)

「SpriteFont Description」を選択

Si selecciona el SpriteFont que agregó, verá que el procesador de fuentes WPF está disponible desde el procesador.

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

Puesto que cada parámetro se puede establecer, esta vez intenté establecerlo como se muestra en la figura para el momento. Desafortunadamente, no puedes cambiar el color en la versión actual de MonoGame Pipeline.

各パラメータ設定

Trate de construir. 6860 caracteres fueron construidos porque incluía hasta el nivel 2 de JIS. Aún así, el tiempo es de unos nueve segundos, por lo que se puede ver que es bastante rápido.

ビルド完了

Ahora, estamos dibujando usando este SpriteFont, y el código es exactamente el mismo que XNA. Puede dibujar texto utilizando el código introducido en "Mostrar caracteres alfanuméricos" tal como está. Por supuesto, el japonés también es posible.

Me gustaría poner sólo el código que agregué una vez.

La parte de definición del campo. Se ha añadido "SpriteFont".

GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

SpriteFont font;

Cargar y crear datos de fuente en el método 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");
}

Dibujo con japonés en el método Draw.

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);
}

Cuando se ejecuta, se dibuja el texto. Es un poco difícil de entender, pero las letras tienen bordes y gradaciones azules dentro.

Se hizo fácil dibujar japonés así, y se hizo posible dibujar el personaje con la decoración.

テキストの描画結果

Por último, no puede cambiar el color de la decoración de texto en monoGame Pipeline, pero puede abrir el archivo directamente y modificarlo.

Una vez que haya guardado y cerrado el proyecto, abra el archivo .mccb como un archivo de texto.

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

Si se desplaza hacia abajo, hay información de color en el parámetro de destino, así que por favor edítela directamente allí.

色情報を直接編集

Después de guardar el texto, abra monoGame Pipeline de nuevo y compilarlo. Puede ver que el color ha cambiado al ejecutarlo.

色変更したテキスト