Visualización japonesa avanzada con procesadores de contenido personalizados
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.
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:
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.
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".
A continuación, marque "WindowsBase". Ahora presione el botón OK para confirmar y abrir el Administrador de referencias de nuevo.
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
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".
Realice una compilación para ver si se ha creado correctamente.
Se crea DLL.
Crear un proyecto de juego
Cree un proyecto para MonoGame. No importa qué plataforma sea.
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.
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.
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.
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.)
Si selecciona el SpriteFont que agregó, verá que el procesador de fuentes WPF está disponible desde el procesador.
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.
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.