在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);
        }
    }

在XNA中实现对文本的方法

有各种方法可以做到这一点,在这个线程中讨论。这个线程的一个例子是:

// 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); 
}