在GUI上打印到屏幕

时间:2012-11-16 11:46:52

标签: c# visual-studio-2010 xna console.writeline

我对编程非常陌生,特别是创建GUI;我以前只用C#编写控制台程序,现在我正在尝试使用XNA构建游戏。任何人都可以通过让我知道如何在GUI中打印到屏幕来帮助我吗?我目前正在尝试System.Console.WriteLine("");的变体,但不会打印到屏幕。我正在使用的代码如下。谁能告诉我哪里出错了?

ResourceCounter.cs

      public ResourceCounter(Vector2 pos, GameTime gameTime)`
       {
        position = pos;
        over = false;
        clicked = false;
        gameTime = new GameTime();`

        currentTime += (float)gameTime.ElapsedGameTime.TotalSeconds; 
        System.Console.WriteLine("Resources: ", pSourceCount);

        if (currentTime >= countDuration)
        {
            pSourceCount++;
            **System.Console.WriteLine("Resources: ", pSourceCount);**
        }
        if (pSourceCount >= limit)
        {
            pSourceCount = 0;//Reset the counter;

        }


    }

在我的主GameScreen.cs课程中:

    public override void Update(GameTime gameTime)
    {
        MouseState mState = Mouse.GetState();
        menu.Update(mState, cursor, gameTime);

        if (menu.currentstate == State.campaign)
        {
            campaign.Update(pTower);
            //campaign.Update(eTower);
            **System.Console.WriteLine("Resources: ", pSourceCount);**
        }
        base.Update(gameTime);
    }

1 个答案:

答案 0 :(得分:3)

使用SpriteBatch.DrawString方法使用XNA渲染文本。

使用System.Console.WriteLine打印文本时,会将其写入标准输出流。然后,通过控制台显示此流中的数据。您的游戏窗口根本不会注意到这一点。


文字渲染

可以说,您在游戏窗口中绘制的所有内容都包含(纹理)三角形。文本也不例外。使用四边形(矩形)渲染单个字符,再次由2个三角形组成。

文本XNA!将使用总共4个精灵(8个三角形)绘制,每个角色使用一个精灵:

text rendered in "Fill" and "Wireframe" mode

位图字体

常用字体格式将字符存储为矢量。对于bitmap fonts(游戏中通常使用的字体),实际类型的面部存储在一个或多个位图(纹理)中。这种方法要快得多,因为字符形状本身已经光栅化,只需要从纹理中采样。明显的缺点是,所有字符都以固定大小出现。每个重量每个字体每个字体需要一个位图字体。

这是Arial字体的精灵地图,大小为20,标准体重:

为了绘制某个字符,渲染器必须知道该字符位于何处。如上图所示,每个角色占据一个不重叠的矩形区域。这些矩形的尺寸可以存储在附加的文本或XML文件中。

例如,这可能是上面精灵地图的A字符的定义:

<char id="65" x="235" y="47" width="12" height="13" xoffset="0" yoffset="3" xadvance="11" page="0" />
  • id是ASCII值(A = 65)
  • xy是左上角的位置
  • widthheight是矩形的大小
  • xoffsetyoffset是屏幕上的偏移量
  • xadvance是前一个字符的距离
  • page是包含字符
  • 的位图的索引

结论

游戏的文字渲染并不像人们想象的那么简单。 XNA 极大地简化了SpriteBatch类的过程。所涉及步骤的摘要:

  • 将标准字体转换为位图字体
  • 在游戏应用程序中加载字体文件
  • 为给定字符串创建精灵
  • 将精灵渲染到屏幕

字体示例是使用免费Bitmap Font Generator创建的。