(我嘗試發佈一個圖像,但不能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