我对编程非常陌生,特别是创建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);
}
答案 0 :(得分:3)
使用SpriteBatch.DrawString
方法使用XNA渲染文本。
使用System.Console.WriteLine
打印文本时,会将其写入标准输出流。然后,通过控制台显示此流中的数据。您的游戏窗口根本不会注意到这一点。
可以说,您在游戏窗口中绘制的所有内容都包含(纹理)三角形。文本也不例外。使用四边形(矩形)渲染单个字符,再次由2个三角形组成。
文本XNA!
将使用总共4个精灵(8个三角形)绘制,每个角色使用一个精灵:
常用字体格式将字符存储为矢量。对于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)x
和y
是左上角的位置width
和height
是矩形的大小xoffset
和yoffset
是屏幕上的偏移量xadvance
是前一个字符的距离page
是包含字符游戏的文字渲染并不像人们想象的那么简单。 XNA 极大地简化了SpriteBatch
类的过程。所涉及步骤的摘要:
字体示例是使用免费Bitmap Font Generator创建的。