我当前的分数输出是在屏幕左上角写了两次“SCORE:0”(一个用红色字母,另一个用黄色),但位置略有不同,以使字母/数字具有复古的重叠外观。只有一个分数,但两层分数相同。
问题是只有分数的红色层更新,而黄色层保持在 0。
我正在使用以下代码在 FontManager 类(见下文)中创建我的 ScoreFont 类的两个对象,它们具有不同的颜色/位置,以提供重叠的感觉(红色上的黄色);
fontList.Add(new ScoreFont(Game.Content.Load<SpriteFont>(@"Fonts\Score"), scoreText, new Vector2 (5, -5), Color.Yellow, 1f, 0f));
//Adding this to make the score font stick out more by layering it
fontList.Add(new ScoreFont(Game.Content.Load<SpriteFont>(@"Fonts\Score"), scoreText, new Vector2(9, -5), Color.Red, 1f, 0.1f));
您会注意到创建的第一个 ScoreFont 对象是黄色的(我正在尝试修复的那个),第二个是红色的(显示正确分数的那个)。如果我颠倒这些,那么黄色会起作用,但红色不会。
我正在使用 for 循环更新/绘制 FontManager 类中的列表;
for (int i = 0; i < fontList.Count; i++)
{
Font f = fontList[i];
f.Draw/Update(gameTime, sB);
}
从 Font.cs 类派生的 ScoreFont.cs 类包含;
class ScoreFont : Font
{
public string scoreText;
public int totalScore = 0;
public static ScoreFont sF;
//Constructor
public ScoreFont(parameters)
:base (parameters)
{sF = this;}
//Add score
public void AddScore(int score)
{
totalScore += score;
}
//Draw
public override void Draw(GameTime g, SpriteBatch s)
{
scoreText = "Score: " + totalScore;
s.DrawString(scoreText,blah, blah, ...);
}
当精灵离开屏幕时,我通过在不同的类中调用 AddScore 方法来更新分数;
ScoreFont.sF.AddScore(spriteList[i].score);
如果我只创建乐谱的一层,但当我尝试创建两层时,最上面的层(黄色层)不会更新,这很有效。
我该如何解决?