在XNA中实现对文本的方法
本文关键字:文本 方法 实现 XNA | 更新日期: 2023-09-27 18:19:13
所以我今天开始乱搞XNA,我还在学习c#。我正在尝试制作一个游戏的主菜单。
我已经制作了一个精灵字体文件,并正在制作我想要的文本。代码是:
spriteBatch.DrawString(font, ">://Start Game [1]", new Vector2(0, 0), Color.LimeGreen);
我的问题是我有一种方法可以从"计算机"中获得打字效果(几天前我问了一个问题),但这是在c++中。我知道如何将其转换为c#,但即使我正确转换代码,我如何将该方法应用于正在创建的文本?在XNA中打印文本是否更有效?
c++中实现输入效果的代码是: void typeOutput(string displayString){
for(int i = 0; i < displayString.length(); i++){
cout << displayString[i];
Sleep((rand() + 1)%typeSpeed);
}
}
有各种方法可以做到这一点,在这个线程中讨论。这个线程的一个例子是:
// our string will take 3 seconds to appear
private const float timerLength = 3f;
private float timer = 0f;
然后在Draw方法中添加计时器并使用它来确定要绘制的字符串的长度:
timer += (float)gameTime.ElapsedGameTime.TotalSeconds;
// if the timer is passed timerLength, we just draw the whole string
if (timer >= timerLength)
{
spriteBatch.DrawString(myFont, myString, stringPosition, stringColor);
}
// otherwise we want to just draw a substring
else
{
// figure out how many characters to show based on
// the ratio of the timer to the timerLength
int numCharsToShow = (int)(myString.Length * (timer / timerLength));
string strToDraw = myString.Substring(0, numCharsToShow);
// now just draw the substring instead
spriteBatch.DrawString(myFont, strToDraw, stringPosition, stringColor);
}