0

C# を使用してプラットフォーマー ゲームに「Lives: 3」を追加しようとしています。

Drawhud()現在、ゲームは次のような方法でスコアを描画します。

// Draw time remaining. Uses modulo division to cause blinking when the
            // player is running out of time.
            string timeString = "TIME: " + level.TimeRemaining.Minutes.ToString("00") + ":" + level.TimeRemaining.Seconds.ToString("00");
            Color timeColor;
            if (level.TimeRemaining > WarningTime ||
                level.ReachedExit ||
                (int)level.TimeRemaining.TotalSeconds % 2 == 0)
            {
                timeColor = Color.Yellow;
            }
            else
            {
                timeColor = Color.Red;
            }
            DrawShadowedString(hudFont, timeString, hudLocation, timeColor);

            // Draw score
            float timeHeight = hudFont.MeasureString(timeString).Y;
            DrawShadowedString(hudFont, "SCORE: " + level.Score.ToString(), hudLocation + new Vector2(0.0f, timeHeight * 1.2f), Color.Yellow);

私はこのように生活を描こうとしました(コードを大幅に簡素化しました):

// Players lives
        public const int PlayerLives = 3;

// Draw Player Lives
            float LivesHeight = hudFont.MeasureString(timeHeight).Y;
            DrawShadowedString(hudFont, "Lives: " + Player.PlayerLives.ToString("0"), hudLocation + new Vector2(0.0f, LivesHeight * 1.4f), Color.Yellow);

DrawShadowString()これは、メソッドで作成した文字列を描画しません。どうしてこれなの?それを行う簡単な方法はありますか?

これは、DrawShadowedString()要求された方法です。

private void DrawShadowedString(SpriteFont font, string value, Vector2 position, Color color)
        {
            spriteBatch.DrawString(font, value, position + new Vector2(1.0f, 1.0f), Color.Black);
            spriteBatch.DrawString(font, value, position, color);
        }

ありがとう

4

0 に答える 0