(我尝试发布一个图像,但不能b/c我的stackoverflow声誉不够高,所以与我一样裸露,因为我试图画一个字的图片:))使用c#/ xna框架如何使用多个类在屏幕上绘制重叠游戏分数?
我目前的得分输出是'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对象是黄色的(一个我“米试图修复),第二个是红色的(一个显示正确比分),如果我扭转这些再黄会工作,但红会没有
我更新/与图形中的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);
这个伟大的工程,如果我只是创造了得分的一层,但是当我尝试创建两个,最顶层(黄色的)不更新。
我该如何解决这个问题?任何帮助,将不胜感激。
谢谢你,我只是一个初学者,仍然把所有东西都包裹起来,我把公共int totalScore = 0;改成public *** static *** int totalScore = 0;如你所说,这一切都很好现在,再次感谢! – Bilbo