Tutorial 10: Escribiendo texto en XNA


Añadimos un nuevo elemento dentro de la carpeta de Content

Tutorial10_01

Seleccionamos un Sprite Font

Tutorial10_02

Cargar un SpriteFont en XNA

Para cargar un spriteFont necesitamos declarar primero la variable:

SpriteFont texto;

Hacemos el mismo prodecimiento para cargar una textura, en este caso sería un spriteFont:

protected override void LoadContent()
       {
           spriteBatch = new SpriteBatch(GraphicsDevice);
           texto=this.Content.Load<SpriteFont>(“texto”);
       }

Dibujar un SpriteFont en XNA

Para poder dibujar nuestro texto en pantalla, necesitamos tener una posición en donde colocarlo, entonces podemos usar Vectores de posición en este caso de dos posiciones X,Y de la siguiente manera:

protected override void Draw(GameTime gameTime)
        {
            graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
            Vector2 posicionTexto=new Vector2(200,300);
            spriteBatch.Begin();
            spriteBatch.DrawString(texto,”Texto en Pantalla”,posicionTexto,Color.White);
            spriteBatch.End();
            base.Draw(gameTime);
        }

Checamos que la sentencia de Draw cambia a DrawSting colocando como parametros, el spriteFont, el texto a dibujar, la posición y el color del texto.

Tutorial10_03

Cambiando las propiedades del texto en XNA

Nos dimos cuenta que cuando creamos un nuevo spriteFont checamos que es un archivo XML, por aquellos que no sepan que es un XML, es un archivo de texto plano que sigue una estructura a través de nodos, de los cuales nosotros podemos crear nodos, y personalizarlos.

Damos clic al archivo en nuestro Solution Explorer (Explorador de Soluciones) y tenemos lo siguiente:

Tutorial10_04

Tenemos muchos comentarios, yo lo reduje y queda de esta forma:

<?xml version=”1.0″ encoding=”utf-8″?>

<XnaContent xmlns:Graphics=”Microsoft.Xna.Framework.Content.Pipeline.Graphics”>
  <Asset Type=”Graphics:FontDescription”>
    <FontName>Arial</FontName>
    <Size>14</Size>
    <Spacing>0</Spacing>
    <UseKerning>true</UseKerning>
    <Style>Regular</Style>
    <CharacterRegions>
      <CharacterRegion>
        <Start> </Start>
        <End>~</End>
      </CharacterRegion>
    </CharacterRegions>
  </Asset>
</XnaContent>

Si somos curiosos podemos cambiar el tipo de letra, el tamaño, el espacio entre caracteres, cambiar a negrita, cursiva, etc…

Haremos un ejemplo de colocar la hora en pantalla:

Para eso usaremos una variable de tipo DateTime que nos permitirá manipular la hora del sistema y para referirse a la hora actual usaremos la propiedad DateTime.Now

Después pasaremos esa fecha a formato de cadena de esta forma:

string cadenaHora = hora.ToLongTimeString();

Existen diferentes formas de representar la hora como puede ser Long, short, con dias, horas, minutos, ya es cuestión de como quieran representarlo.

Tutorial10_05

protected override void Draw(GameTime gameTime)
       {
           graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
           DateTime hora = DateTime.Now;
           string cadenaHora = hora.ToLongTimeString();
           Vector2 posicionTexto=new Vector2(50,100);
           spriteBatch.Begin();
           spriteBatch.DrawString(texto,cadenaHora,posicionTexto,Color.White);
           spriteBatch.End();
           base.Draw(gameTime);
       }

Tutorial10_06

Download: XBOX360Game.zip (68 kbs)  

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 128 other followers

%d bloggers like this: